GCC的-wl,-rpath=<link_path>参数
2017-04-27 13:32
246 查看
使用GCC编译动态链接库的项目时,在其他目录下执行很可以出现找不到动态链接库的问题。
这种情况多发生在动态链接库是自己开发的情况下,原因就是程序运行时找不到去何处加载动态链接库。
可能会说在编译时指定了链接的目录啊!编译时指定的 -L的目录,只是在程序链接成可执行文件时使用的。程序执行时动态链接库加载不到动态链接库。
解决办法有两种,第一程序链接时指定链接库的位置,就是使用-wl,-rpath=<link_path>参数,<link_path>就是链接库的路径。如:
gcc -o foo foo.c -L. -lfoo -Wl,-rpath=./
上面就是指定了链接的位置在当前目录,这种情况只有在当前目录执行./foo时,才是可以正确使用的。一般情况我们使用如下格式:
gcc -o foo foo.c -L$(prefix)/lib -lfoo -Wl,-rpath=$(prefix)/lib
第二种方式就是,将链接库的目录添加到/etc/ld.so.conf文件中或者添加到/etc/ld.so.conf.d/*.conf中,然后使用ldconfig进行更新,进行动态链接库的运行时动态绑定。如:
添加文件/etc/ld.so.conf.d/foo.conf,内容如下:
/usr/local/lib然后执行如下命令:
# ldconfig
就可以正常的运行了。
参考文章:https://gcc.gnu.org/ml/gcc-help/2005-12/msg00017.html
这种情况多发生在动态链接库是自己开发的情况下,原因就是程序运行时找不到去何处加载动态链接库。
可能会说在编译时指定了链接的目录啊!编译时指定的 -L的目录,只是在程序链接成可执行文件时使用的。程序执行时动态链接库加载不到动态链接库。
解决办法有两种,第一程序链接时指定链接库的位置,就是使用-wl,-rpath=<link_path>参数,<link_path>就是链接库的路径。如:
gcc -o foo foo.c -L. -lfoo -Wl,-rpath=./
上面就是指定了链接的位置在当前目录,这种情况只有在当前目录执行./foo时,才是可以正确使用的。一般情况我们使用如下格式:
gcc -o foo foo.c -L$(prefix)/lib -lfoo -Wl,-rpath=$(prefix)/lib
第二种方式就是,将链接库的目录添加到/etc/ld.so.conf文件中或者添加到/etc/ld.so.conf.d/*.conf中,然后使用ldconfig进行更新,进行动态链接库的运行时动态绑定。如:
添加文件/etc/ld.so.conf.d/foo.conf,内容如下:
/usr/local/lib然后执行如下命令:
# ldconfig
就可以正常的运行了。
参考文章:https://gcc.gnu.org/ml/gcc-help/2005-12/msg00017.html
相关文章推荐
- gcc中的-Wl,rpath=<your_lib_dir>选项
- gcc中的-Wl,rpath=<your_lib_dir>选项
- gcc中的-Wl,rpath=<your_lib_dir>选项
- gcc中的-Wl,rpath=<your_lib_dir>选项
- gcc中的-Wl,rpath=<your_lib_dir>选项
- gcc中的-Wl,rpath=<your_lib_dir>选项
- gcc中的-Wl,rpath=<your_lib_dir>选项
- Struts里面<html:link>的使用方法以及加多个参数的方法
- GCC的-wl,-rpath=参数
- <Context path="" docBase="reports" debug="0" reloadable="true"/> 中 debug 参数解释
- base href="<%=basePath%>"
- <c:set var="root" value="${pageContext.request.contextPath}"></c:set>According to TLD or attribute d
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/>
- FTP 如何删除<%=GetRobinLink()%>
- <配置> Ubuntu gcc 安装 使用方法
- 使用泛型类型System.Collections.Generic.Icomparer &lt;T&gt; 需要一个类型参数
- 【引用】回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/>(转载)
- 在Perl Express中怎么样获取<STDIN>参数
- What is “Mock You”系列之(二) 参数匹配-It & Match<T>
- DWR中常用<init-param>参数列表