实用方便解决error while loading shared libraries办法,及linux gcc 下使用总结
来源:互联网 发布:淘宝助理上传到仓库 编辑:程序博客网 时间:2024/05/17 13:45
linux gcc 下使用总结转自:点击打开链接
我们在linux下编译程序需要用到自己的动态库时,有时会碰到这个问题,error while loading shared libraries。
本质原因就是链接器在默认的lib库中找不到我们所需要的动态库,网上有很多解决办法,大部分都是说把你的动态库,拷贝到/usr/lib或者/lib下。
其实还有一个更方便实用的方法,就是在你的编译命令中,增加上
-Xlinker -rpath=./如果你的动态库是在当前路径下的话。
如果您只是想解决这个问题,您可以不用往下面看了~
---------------------------------------------我是华丽的分割线----------------------------------------------------------------
入门知识
编译器把编译生成目标代码的任务分为以下4步:
a.预处理,把预处理命令扫描处理完毕;
b.编译,把预处理后的结果编译成汇编或者目标模块;
c.汇编,把编译出来的结果汇编成具体CPU上的目标代码模块;
d.连接,把多个目标代码模块连接生成一个大的目标模块;
gcc 下常用参数
-I 指定头文件搜索路径,默认情况下gcc的搜索路径/usr/include /usr/local/include
-L 指定库文件的搜索路径,默认的搜索路径为 /lib/ /usr/lib /usr/local/lib ??
-l 指定需要链接的库名称, 注:正常的库libboost_regex.so 使用-lboost_regex 省略前面的lib和后面的扩展名
-c 只生成目标代码 注:生成库文件时使用,只编译不链接
-shared 生成动态库
-o 指定输出文件名称
-W 显示所有的警告信息 注:建议打开
-w 屏蔽所有的警告信息,默认情况
-g 把调试开关打开,让编译的目标文件有调试信息
-S 把源文件编译成汇编代码,不做汇编和连接的动作
-E 只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作
-Xlinker -rpath=./lib 指定程序运行是动态库的搜索路径
-MM 显示出目标文件所依赖的源文件和头文件,头文件仅包括本地头文件
-M 与-MM类似,但是头文件包括系统头文件,即用”<>”
这两个参数在写makefile时用到
实用方法
1, 生成动态库方法
$ gcc -fPIC -c func.c -o func.o
$ gcc -shared -o libfunc.so.1.0.0 func.o
2, 生成静态库方法
$ gcc -c func.c -o func.o
$ ar rcs libfunc.a func.o
3, ldd 命令
查看动态库和可执行文件的依赖的库
4. -MM参数
[yaronli@sim124 cc]$ gcc -MM transfer/Transfer_server.cpp -I. Transfer_server.o: transfer/Transfer_server.cpp transfer/Transfer.h \ transfer/transfer_types.h transfer/TransferStatus.h \ transfer/TransferTasks.h common/TaskIf.h transfer/TransferWorker.h \ common/RingBuffer.h common/TaskIf.h common/FileHandler.h common/log.h \ common/DbOperator.h transfer/Transfer_server.h
问题总结
1, 静态编译时,被依赖库放到依赖库的后面,否则链接时会出错
2, 在生成动态库…………………
- 实用方便解决error while loading shared libraries办法,及linux gcc 下使用总结
- 解决:“error while loading shared libraries: libxxxx“
- error while loading shared libraries错误解决
- error while loading shared libraries解决
- error while loading shared libraries解决
- error while loading shared libraries错误解决
- error while loading shared libraries错误解决
- 解决Linux环境下jdk安装的error while loading shared libraries: libjli.so 问题
- linux使用wkhtmltopdf报错error while loading shared libraries:
- arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared ob
- 解决error while loading shared libraries: xxx.so.x"类似问题办法和错误原因
- error while loading shared libraries: libc.so.6 救急办法
- error while loading shared libraries
- error while loading shared libraries
- error while loading shared libraries
- error while loading shared libraries
- error while loading shared libraries
- error while loading shared libraries
- NHibernate Cookbook 学习笔记 6
- java中字节流示例
- VC 添加库 与 忽略库 (库:lib文件)
- 自己动手编写嵌入式Bootloader之(1)
- 2011-09-08[分享到QQ空间 新浪微博 腾讯微薄 飞信的代码]
- 实用方便解决error while loading shared libraries办法,及linux gcc 下使用总结
- Linux内核Makefile文件
- jquery插件编写以及调用
- Syntax error, parameterized types are only available if source level
- 服务器无法取得url中#后的的内容
- javascrip客户端验证文件大小及文件类型并重置上传
- Strange GCC error: expected unqualified-id before ‘OTHER’ token
- OAuth 1.0 部分资料翻译
- 〖997〗-重叠 I/O 操作在进行中 的原因和解决方法