2013-02-22 59 views
1

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

回答

0

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

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

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

谢谢你的回复!我遇到的问题是链接器找不到库 - 我在这里问了一下:http://stackoverflow.com/questions/15007309/embedding-python-3-3,然后我想确认是否真的需要安装Python 3.3。我尝试了你提到的两个选项('DYLD_LIBRARY_PATH =“。”gcc embed.c -I./include -L。-lpython33'和'gcc embed.c -I./include -rpath =。-L。-lpython33' - gcc不能识别'-Wl'开关),但它仍然不起作用。请你知道为什么它没有链接? – 2013-02-23 13:58:26