g++编译时, 用-labc 选项后, 编译器会自动按照命名规则去搜索 libabc.a 库文件, 但如果我想使用动态链接库链接应如何指定参数?
优先链接共享库。共享库找不到,才链接静态库。 |
可是如果我在 -l 选项后添加共享库, 则链接时报告库文件不存在, 共享库和静态库的命名规则是否一样?
例如我有一个名为 libabc.so, 我应采用什么格式的选项才可以在gcc命令中找到它?
使用 -l 选项指定静态库和动态库的格式都是一样的,如果库文件名为libabc.so,那么就用 -labc 即可。
链接时会去搜索这个库文件,如果不是系统库,那么你需要告诉链接器它的路径。有两种方法:一种是在参数中用 -L 选项指定库文件搜索路径,可以并列多个。例如:gcc -L /home/ddd -L/home/ddd/lib。 另一种方法是在环境变量中设置LD_LIBRARY_PATH 包含有你的动态库文件所在的路径。这个环境变量用在Sorlarise和Linux,如果你是在HP-UX下,是SHLIB_PATH。