当我想编译一个使用动态库的程序时,我是否必须安装(即复制到特定位置,例如 /usr/share/lib)这个库?或者是否可以,如果我将这个库放在某个地方的任何地方,然后在链接期间我将链接器指向它,例如'-L ./thelibfolder'?
问问题
73 次
1 回答
0
我是否必须安装(即复制到特定位置,例如 /usr/share/lib)这个库?
不。
对于 UNIX 共享库,您需要安排两件事:
- 在链接主要可执行文件时,您必须使静态链接器知道该库。通常这是通过将
-L/path/to/directory -lfoo
链接标志添加到链接行来实现的。 - 您还必须进行运行时加载程序搜索
/path/to/directory
。这是特定于系统的。在许多系统上,设置LD_LIBRARY_PATH
环境变量可以达到预期的效果,尽管这通常不是首选方法。另一种方法是将此路径编码到应用程序本身,例如在 Linux 上将添加-Wl,-rpath=/path/to/directory
到应用程序链接行。
于 2013-02-23T04:12:25.287 回答