makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
来源:互联网 发布:耳骨夹淘宝 编辑:程序博客网 时间:2024/05/20 19:45
转自:http://www.blogjava.net/void241/archive/2012/05/07/377564.html
LDFLAGS是选项,LIBS是要链接的库。都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么。
网上不难搜索到上面这段话。不过“告诉ld怎么吃”是什么意思呢?
看看如下选项:
LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib
LIBS = -lmysqlclient -liconv
这就明白了。LDFLAGS告诉链接器从哪里寻找库文件,LIBS告诉链接器要链接哪些库文件。不过使用时链接阶段这两个参数都会加上,所以你即使将这两个的值互换,也没有问题。
说到这里,进一步说说LDFLAGS指定-L虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给"-Wl,R"
LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib
如 果在执行./configure以前设置环境变量export LDFLAGS="-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib" ,注意设置环境变量等号两边不可以有空格,而且要加上引号哦(shell的用法)。那么执行configure以后,Makefile将会设置这个选项, 链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。
------------------------------------------------------------------------------------------------------------------------
PS:-Wl,R在GraphicsMagick环境下,用为-R, 也就是LDFLAGS = -L/var/xxx/lib -R/var/xxx/lib
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS....
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- Makefile选项CFLAGS,LDFLAGS,LIBS
- 【bzoj 1176】Mokia(CDQ分治)
- python 遍历 程序 动态库依赖 ,减少不必要依赖,减少启动时间
- 初识Avro
- Java程序员笔试必备--Java基本概念
- 表达式语法分析——递归子程序法
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
- mysql5.7内存占用持续过高
- 集算器为报表呈现提供数据通道
- 安卓第三方登录之微信登录(图文详解)
- 程序员加薪的技巧
- Redhat安装与日志备份logrotate
- 如何做个“好员工”
- Web第一阶段:Html
- Spring -- AOP