使用动态库

时间:2013-02-22 10:47:27

标签: compilation linker dynamic-library

当我想编译一个使用动态库的程序时,我是否必须安装(即复制到特定的地方,比如/ usr / share / lib)这个库?或者没关系,如果我把这个库放到某个地方,然后在链接过程中我将链接器指向它,例如'-L ./thelibfolder'?

1 个答案:

答案 0 :(得分:0)

  

我必须安装(即复制到特定的地方,比如/ usr / share / lib)这个库吗?

没有

对于UNIX共享库,您需要安排两件事:

  • 在链接主可执行文件时,必须使静态链接器知道库。通常,这是通过向链接行添加-L/path/to/directory -lfoo链接标志来实现的。
  • 您还必须进行运行时加载程序搜索/path/to/directory。这是系统特定的。在许多系统上,设置LD_LIBRARY_PATH环境变量可以获得所需的结果,尽管这通常不是首选方法。另一种方法是将该路径编码到应用程序本身中,例如,在Linux上,可以将-Wl,-rpath=/path/to/directory添加到应用程序链接行。