makefile的选项ldflags libs和LIBS的区别

makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别 -
makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
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
CFLAGS 或&CPPFLAGS的用法
CPPFLAGS='-I/usr/local/libjpeg/include -I/usr/local/libpng/include'
更多相关文章
CFLAGS 表示用于C编译器的选项 CXXFLAGS 表示用于C++编译器的选项 这两个变量实际上涵盖了编译和汇编的两个步骤 CFLAGS:指定头文件(.h)的路径,如:CFLAGS=-I/usr/include -I/path/include .同样地,安装一个包时会在安装路径下建立一个incl ...
CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项. 这两个变量实际上涵盖了编译和汇编两个步骤. 先来看几个相关的环境变量:PATH.LDFLAGS.CFLAGS PATH:大家应该都很熟悉.安装一个包后可能会在安装目录建立一个bin目录,里面都是些可执行程 ...
LDFLAGS是选项,LIBS是要链接的库.都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么. 网上不难搜索到上面这段话.不过&告诉ld怎么吃&是什么意思呢? 看看如下选项: LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib L ...
Makefile选项CFLAGS,LDFLAGS,LIBS CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项.这两个变量实际上涵盖了编译和汇编两个步骤. CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/pa ...
-Wall -Wextra -Wstrict-prototypes -Wpointer-arith
目录 第一步:将ShareSDK导入到你的工程中 第二步:添加依赖框架 第三步:引入头文件 ...
memcached安装 版本V1.0 时间0 版权GPL 作者itnihao 邮箱
博客 http://itnihao. 如需重新发行,请注 ...
页面加入代码:&script&window.onload=function(){ if (location.href.indexOf(&?xyz=&)&0){ location. ...
unit Unit1;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
1.修改unity3d的Mouse Look相机脚本:按住右键控制前进方向,方向键改变位置 2.给场景相机添加系统自带的fpswalker脚本 3.指定fpswalker里transform指定场景相机 PS:Mou ...
友情链接:
管理员邮箱:info@centos6配置vnc登录远程物理机及vb复制vdi启动虚拟机网络问题_Linux系统_ThinkSAAS
centos6配置vnc登录远程物理机及vb复制vdi启动虚拟机网络问题
centos6配置vnc登录远程物理机及vb复制vdi启动虚拟机网络问题
内容来源: 网络
1、安装vnc和vncserver
#yum install tigervnc tigervnc-server
2、启动VNC服务# vncserverYou will require a password to access your desktops.Password:Verify:会提示输入密码,这个密码是远程登录时所需要输入的密码。 我尝试无密码登录,好像还不行,必须整个密码。这里要关闭防火墙,/etc/init.d/iptables stop
3、编辑VNC配置文件vi /etc/sysconfig/vncservers
VNCSERVERS="1:root"
//去掉#,按实际配置桌面号和用户名VNCSERVERARGS[2]="-geometry
-nolisten tcp -localhost"
//去掉#,配置分辨率修改后保存退出
4、设置vnc服务器开机自动启动:方法一:使用“ntsysv”命令启动图形化服务配置程序,选中vncserver服务,点击确定即可。方法二:在终端里使用chkconfig命令:# chkconfig vncserver on# chkconfig --list vncservervncserver
6:off
5、更改VNC连接密码:(也可以不改)# vncpasswd
到这里VNC服务端就基本完成了,可以在另一台机器上用VNC客户端(如RealVNC)远程登录CentOS:输入:CentOS系统IP:5901(默认端口号)
(如在RealVNC窗口输入:192.168.1.100:5901)之后会提示输入密码。
6、如果连接上以后出现灰屏或者只显示终端(命令行)不进入图形界面(已安装图形界面的情况下),可以按照下面的方法设置:
进入用户的home目录,cd /home/user如果是用root账号登录的,那么当前目录就是用户根目录# cd ~/.vncvi xstartup
//编辑xstartup配置#twm &
//加#,注释掉这一行gnome-session &
//添加这一行保存退出即可正常连接!
vbox安装:/xia520pi/p/3545666.html
公司测试环境安装的都是RHEL6.3,在进行虚拟机克隆后,发现clone的虚拟机网卡起不来,具体报如下错误:[ Desktop]# service network restartShutting down loopback interface:
]Bringing up loopback interface:
]Bringing up interface eth0:
Error: No suitable device found: no device found for connection &System eth0&.
[FAILED]当你执行ifconfig命令的时候,会发现显示eth1网卡的配置文件却为/etc/sysconfig/network-scripts/ifcfg-eth0。
[ network-scripts]# ifconfig|grep addreth1
Link encap:Ethernet
HWaddr 00:0c:29:f4:95:e3
inet6 addr: fe80::20c:29ff:fe5c:65b7/64 Scope:Link
Interrupt:19 Base address:0x2024
inet addr:127.0.0.1
Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host[ network-scripts]# lsifcfg-eth0
ifdown-isdn
ifup-aliases
ifup-plusb
init.ipv6-globalifcfg-lo
ifdown-post
net.hotplugifdown
ifdown-ppp
network-functionsifdown-bnep
ifdown-routes
ifup-routes
network-functions-ipv6ifdown-eth
ifdown-sit
ifup-sitifdown-ippp
ifdown-tunnel
ifup-tunnelifdown-ipv6
ifup-wireless[ network-scripts]# 产生这个问题的原因是虚拟机分配给操作系统的虚拟网卡MAC地址是不一样的。第一个系统的网卡MAC地址记录在了/etc/udev/rules.d /70-persistent-net.rules,命名为eth0。新克隆分配的系统的网卡MAC地址也记录在了该文件当中,与之前的系统一样,因此有 了冲突。
可以查看一下两个机子的这个70-persistent-net.rules文件的内容
第一个系统:[ rules.d]# cat 70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules# program, run by the persistent-net-generator.rules rules file.## You can modify it, as long as you keep each rule on a single# line, and change only the value of the NAME= key.
# PCI device 0x0 (pcnet32)SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:f4:95:e3", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 
克隆后的系统:
[ rules.d]# cat 70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules# program, run by the persistent-net-generator.rules rules file.## You can modify it, as long as you keep each rule on a single# line, and change only the value of the NAME= key.
# PCI device 0x0 (pcnet32)SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:f4:95:e3", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" 
我们可以看到这两个系统中的MAC地址一样。
问题解决方法:删除克隆后这个系统中的 /etc/udev/rules.d/70-persistent-net.rules文件,重启后系统会重新生成一个新的虚拟网卡MAC地址,然后把这 个文件里NAME="eth1"的eth1改成eth0,同时也要修改ATTR{address}里的mac地址和/etc/sysconfig /network-scripts/ifcfg-eth0文件mac地址,并与新的虚拟网卡MAC地址保持一致。
如:将原文件的SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:f4:95:e3", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" 
改为 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:5c:65:b7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 
修改/etc/sysconfig/network-scripts/ifcfg-eth0文件
DEVICE="eth0"IPV6INIT="yes"NM_CONTROLLED="yes"ONBOOT="yes"TYPE="Ethernet"UUID="-ae77-4c9d-9e58-3ec2851db71d"DEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noNAME="System eth0"HWADDR=00:0c:29:5c:65:b7然后重启网络服务,发现一切正常了。[ Desktop]# service network restartShutting down interface eth0:
Device state: 3 (disconnected)
]Shutting down loopback interface:
]Bringing up loopback interface:
]Bringing up interface eth0:
Active connection state: activatingActive connection path: /org/freedesktop/NetworkManager/ActiveConnection/1state: activatedConnection activated
设置IP后,再检查一下[ Desktop]# ifconfig|grep addreth0
Link encap:Ethernet
HWaddr 00:0C:29:5C:65:B7
inet addr:192.168.0.129
Bcast:192.168.0.255
Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5c:65b7/64 Scope:Link
Interrupt:19 Base address:0x2024
inet addr:127.0.0.1
Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host注:如果你执行ifconfig命令的时候,发现仍然显示eth1而不是eth0,可以将系统重启一遍就变过来了。
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
发布时间: 20:31:13
编辑:www.fx114.net
本篇文章主要介绍了"makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别",主要涉及到makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别方面的内容,对于makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别感兴趣的同学可以参考一下。
makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
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
CFLAGS 或&CPPFLAGS的用法
CPPFLAGS='-I/usr/local/libjpeg/include -I/usr/local/libpng/include'
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:

我要回帖

更多关于 makefile 宏编译选项 的文章

 

随机推荐