makefile 中指定程序运行时加载的库文件路径
2017-11-17 11:36
4063 查看
1 问题描述
程序运行时,提示找不到库。原因:默认运行加载的库路径为 /usr/lib
2 解决方法
2.1 方法一,设置PATH环境变量
如何在加入这些路径呢?以PATH变量为例。一种方法是:直接在命令行下:
PATH="PATH:/path/to/your/bin:/another/path/to/bin”
$ export PATH
这种方法的好处是方便,立即生效,缺点是把当前会话或shell关了之后就失效了,下次还得运行一遍。
2.2 方法二, 修改makefile,直接指定路径
另一种方法是:makefile 中增加运行程序的库文件路径LDFLAGS+= -Wl,-Bstatic -lbt
LDFLAGS+= -Wl,-rpath=/opt/lib/
LDDIR+=-Lhost/libbt/lib
CC=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-gcc
编译指令:
(CC)(LDDIR) -o @^ $(LDFLAGS)
3 makefile 相关参数说明
CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。
这两个变量实际上涵盖了编译和汇编两个步骤。
先来看几个相关的环境变量:PATH、LDFLAGS、CFLAGS
LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=“-L/usr/lib -L/path/to/your/lib”。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果你明明安装了某个包,而安装另一个包时,它愣是说找不到,那就把那个包的lib路径加入的LDFALGS中试一下。
CFLAGS:和LDFLAGS类似,只不过要向里加如的是头文件(.h文件)的路径,如:CFLAGS=“-I/usr/include -I/path/to/your/include”。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。
相关文章推荐
- Linux 指定程序运行加载的动态库路径
- C#打开指定目录,并将焦点放在指定文件上。相对路径(程序起动的目录)
- c/c++编译时,指定程序运行时查找的动态链接库路径
- ubuntu下运行等级设置以及引导加载程序路径问题
- Win7中64位IIS运行32位Asp.net提示错误:未能加载文件或程序集或它的某一个依赖项,系统找不到指定的文件(已解决)
- DALFactory未能加载文件或程序集XXX或它的某一个依赖项。系统找不到指定的文件。
- Delphi 在内存中运行EXE程序,从资源文件中加载
- 关闭指定端口号+bat文件运行程序
- SharePoint 2016 vs部署报错:无法加载功能xxx未能加载文件或程序集xxx或它的某一个依赖项。系统找不到指定的文件
- 加载上传图片,获取文件名、文件路径并保存到程序的文件夹中
- 编写文件搜索小程序:1. 输入绝对路径以及搜索关键字,2. 搜索指定路径下(包括子文件夹)中名称包含关键字的所有文件并打印出,3. 将当前操作记录日志
- 开启ActiveMQ时加载指定路径下的配置文件
- 模块加载失败 请确保该二进制文件在指定的路径中 找不到指定的模块
- “未能加载文件或程序集“AspNetPager”或它的某一个依赖项。系统找不到指定的路径。”的解决方法
- linux 给运行程序指定动态库路径
- 用实例程序再聊makefile指定头文件和库出错的那点破事
- 在Visual Studio 2010的WinForm中使用水晶报表运行错误—— 未能加载文件或程序集
- linux 给运行程序指定动态库路径
- make Makefile 指定Makefile文件中出现的头文件的搜索路径
- 完成文件复制操作,在程序运行后提示输入源文件路径,然后再输入目标文件路径。