编译时找不到动态库

报错:

错误显示.png

或者报错:
file format not recognized; treating as linker script

分析:
  应该是动态库链接的库位置不对,默认在目录usr/lib/ 下查找动态库。

方式一 用ln -s建立创建软连接,确保/usr/lib下存在库。
ln -s /绝对路径/源 /绝对路径/目的
方式二 编译时使用-rpath 或者-rpath-link,例如如下gcc编译时设置
mips64el-redhat-linux-gcc -o test *.c -Wall -L./lib/mips64le/ -lpthread -lm -Wl,-rpath=/usr/local/gcc-4.8.3-d197-n64-loongson/usr/mips64el-redhat-linux/lib64/

扩展:<忘记原文在哪里了,记录核心如下>
(1)-rpath和-rpath-link都可以在链接时指定库的路径;
(2)运行可执行文件时,-rpath-link指定的路径不再有效(链接器没有将库的路径包含进可执行文件中),
           而-rpath指定的路径还有效(因为链接器已经将库的路径包含在可执行文件中);
(3)-L指定的是链接时的库路径,生成的可执行文件在运行时库的路径仍由LD_LIBRARY_PATH环境变量指定;
(4)不管采用何种选项链接,当提示找不到动态库时均可通过设置LD_LIBRARY_PATH解决。
如果链接时没使用 '-rpath' ,那么如果定义了 LD_RUN_PATH 就会使用该值作为 rpath

挂载命令的顺序

mount --bind  A   B
A 挂载给 B
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,598评论 9 467
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,997评论 19 139
  • 1、天爹跟我闹别扭,莫名其妙又不理我了,打趣问孩子,你那么聪明,肯定看的出来你爸是为啥生我气吧?孩子回答:我也不知...
    止末阅读 369评论 2 2
  • 《你说话的温度,决定你人生的高度》,这本书是日本沟通大师斋藤孝所写。他认为,我们的说话方式会影响思维,而思维会影响...
    孙国飞扬阅读 579评论 6 7