【php精品源码栏目提醒】:网学会员鉴于大家对php精品源码十分关注,论文会员在此为大家搜集整理了“GCC 命令行详解 - 基础科学”一文,供大家参考学习
GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名-Linux应用技巧 - diybl 用户名: 密 码: Submit 飞诺网 加入收藏 飞诺网 操作系统 Linux Windows xp Windows 2003 Windows 2000/NT DOS Mac OS X Vista FreeBSD Solaris SCO UNIX AIX Linux系列教程 Linux应用技巧 Linux技术文档 Fedora Ubuntu CentOS 您当前的位置:飞诺网 gtgt linux gtgt Linux应用技巧 频道地图 GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名 Linux Linux系列教程 www.diybl.com 时间 : 2011-09-01 作者:网络 编辑:hawk 点击: 10 评论 Linux应用技巧 Linux技术文档 Fedora 网络捐款慈善机构-金华施乐会 Ubuntu 施乐会本着quot慈善互助行善无忧quot的服务理念 构 CentOS 建了一个全球化的爱心网络网络捐款平 www.shilehui.com Linux 立业职学院,专业无线网络优化 Windows xp 通信行业最新领域,无线网优 国内第一批无线网 Windows 2003 优工程师旗舰领航培训 www.liyechinese.com Windows 2000/NT DOS 开煲仔饭店找quot煲煲掂quot设备 煲煲掂专业生产销售煲仔饭机 节能环保操作简 Mac OS X 单一系列自动化。
Vista www.fsbbd.com FreeBSD Solaris 1。
gcc包含的c/c编译器 SCO UNIX gcccccggcc和cc是一样的,c和g是一样的,没有看太明白前面这半句是什 AIX 么意思:一般c程序就用gcc编译,c程序就用g编译 Windows 2008 Linux应用技巧相关文章 2。
gcc的基本用法 关于qmail-send重新调度queu gcc test.c这样将编译出一个名为a.out的程序 构建DNS服务器简易指南 gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名 批量添加vpopmail用户脚本 字 为什么Linux不适合你 OpenVPN在Linux下的安装配 3。
为什么会出现undefined reference to xxxxx错误? 在Linux桌面上随意使用Windo 首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说明你的程序
源码本 netfilter nf_hooks的优先级 身没有问题,是你用编译器编译时参数用得不对,你没 Intel Pro Wireless 2100 Mini Linux中软件安装及技巧 有指定链接程序要用到得库,比如你的程序里用到了一些数学函数,那么你就要在编译 让Linux发挥更大的作用 参数里指定程序要链接数学库,方法是在编译命令行里加入-lm。
WindowsNT和Linux的文件权 LinuxCacti--超强的系统新能 精通RPM之认识篇 4。
-l参数和-L参数 桌面背景随心换 -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文 linux与windows的后缀不同 件名有什么关系呢? RedHat系统服务控制机制详解 就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的 有的rpm有分i386、i586和i68 头lib和尾.so去掉就是库名了。
网络配置文件快速解读 检查perl安装了哪些模块的2种 好了现在我们知道怎么得到库名了,比如我们自已要用到一个第三方提供的库名字叫lib linux---yum本地源的问题 test.so,那么我们只要把libtest.so拷贝到/usr/lib access转sqlite linux 定时执行shell脚本http://www.diybl.com/course/6_system/linux/linuxjq/20110901/559283.html2011-12-9 17:04:52GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名-Linux应用技巧 - diybl 里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里 Linux性能分析命令 的函数,我们还需要与libtest.so配套的头文件)。
linux sleep 用法 Linux应用技巧热门文章 放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件 ulimit 命令详解 没放在这三个目录里,而是放在其他目录里,这时我们 Redhat系统Root密码的修改 USB otg 学习笔记 只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find Linux 脚本编写基础 -lxxx”,也就是链接程序ld在那3个目录里找不到 如何在windows下安装Linux 用 Emacsecb 后 +cedet阅 libxxx.so,这时另外一个参数-L就派上用场了,比如常用的X11的库,它放在/usr/X11R Linux下C语言编程 6/lib目录下,我们编译时就要用-L/usr/X11R6/lib - Linux下OpenSSL 安装详解 linux图形界面编程基本知识 lX11参数,-L参数跟着的是库文件所在的目录名。
再比如我们把libtest.so放在/aaa/bb linux make menuconfig 执行 b/ccc目录下,那链接参数就是-L/aaa/bbb/ccc -ltest 另外,大部分libxxxx.so只是一个链接,以RH9为例,比如libm.so它链接到/lib/libm.s o.x,/lib/libm.so.6又链接到/lib/libm-2.3.2.so, 如果没有这样的链接,还是会出错,因为ld只会找libxxxx.so,所以如果你要用到xxxx 库,而只有libxxxx.so.x或者libxxxx-x.x.x.so,做一 个链接就可以了ln -s libxxxx-x.x.x.so libxxxx.so 手工来写链接参数总是很麻烦的,还好很多库开发包提供了生成链接参数的程序,名字 一般叫xxxx-config,一般放在/usr/bin目录下,比如 gtk1.2的链接参数生成程序是gtk-config,执行gtk-config --libs就能得到以下输出quot- L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXi -lXext -lX11 -lmquot,这就是编译一个gtk1.2程序所需的g tk链接参数,xxx-config除了--libs参数外还有一个参 数是--cflags用来生成头文 件包含目录的,也就是-I参数,在下面我们将会讲到。
你可以试试执行gtk-config --libs --cflags,看看输出结果。
现在的问题就是怎样用这些输出结果了,最笨的方法就是复制粘贴或者照抄,聪明的办 法是在编译命令行里加入这个xxxx-config --libs -- cflags,比如编译一个gtk程序:gcc gtktest.c gtk-config --libs --cflags这样 就差 不多了。
注意不是单引号,而是1键左边那个键。
除了xxx-config以外,现在新的开发包一般都用pkg-config来生成链接参数,使用方法 跟xxx-config类似,但xxx-config是针对特定的开发包 ,但pkg-config包含很多开发包的链接参数的生成,用pkg-config --list-all命令可以 列出所支持的所有开发包,pkg-config的用法就是pkghttp://www.diybl.com/course/6_system/linux/linuxjq/20110901/559283.html2011-12-9 17:04:52GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名-Linux应用技巧 - diybl -config pagName --libs --cflags,其中pagName是包名,是pkg-config--list-all里 列出名单中的一个,比如gtk1.2的名字就是gtk,pkg- config gtk --libs --cflags的作用跟gtk-config --libs --cflags是一样的。
比如: gcc gtktest.c pkg-config gtk --libs --cflags 。
5。
-include和-I参数 -include用来包含头文件,但一般情况下包含头文件都在
源码里用include xxxxxx实现 ,-include参数很少用。
-I参数是用来指定头文件目录 ,/usr/include目录一般是不用指定的,gcc知道去那里找,但是如果头文件不在/usr/i nclude里我们就要用-I参数指定了,比如头文件放 在/myinclude目录里,那编译命令行就要加上-I/myinclude参数了,如果不加你会得到 一个quotxxxx.h: No such file or directoryquot的错误。
-I 参数可以用相对路径,比如头文件在当前目录,可以用-I.来指定。
上面我们提到的--cf lags参数就是用来生成-I参数的。
6。
-O参数 这是一个程序优化参数,一般用-O2就是,用来优化程序用的,比如gcc test.c -O2,优 化得到的程序比没优化的要小,执行速度可能也有所提 高(我没有测试过)。
7。
-shared参数 编译动态库时要用到,比如gcc -shared test.c -o libtest.so 8。
几个相关的环境变量 PKG_CONFIG_PATH:用来指定pkg-config用到的pc文件的路径,默认是/usr/lib/pkgconf ig,pc文件是文本文件,扩展名是.pc,里面定义开发 包的安装路径,Libs参数和Cflags参数等等。
CC:用来指定c编译器。
CXX:用来指定cxx编译器。
LIBS:跟上面的--libs作用差不多。
CFLAGS:跟上面的--cflags作用差不多。
CC,CXX,LIBS,CFLAGS手动编译时一般用不上,在做configure时有时用到,一般情况 下不用管。
环境变量设定方法:export ENV_NAMExxxxxxxxxxxxxxxxx 9。
关于交叉编译 交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上,比 如在我们地PC平台X86 CPU上编译出能运行在sparc CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到sparchttp://www.diybl.com/course/6_system/linux/linuxjq/20110901/559283.html2011-12-9 17:04:52GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名-Linux应用技巧 - diybl CPU平台上才能运行。
当然两个平台用的都是linux。
这种方法在异平台移植和嵌入式开发时用得非常普遍。
相对与交叉编译,我们平常做的编译就叫本地编译,也就是在当前平台编译,编译得到 的程序也是在本地执行。
用来编译这种程序的编译器就叫交叉编译器,相对来说,用来做本地编译的就叫本地编 译器,一般用的都是gcc,但这种gcc跟本地的gcc编译器 是不一样的,需要在编译gcc时用特定的configure参数才能得到支持交叉编译的gcc。
为了不跟本地编译器混淆,交叉编译器的名字一般都有前缀,比如sparc-xxxx-linux-gn u-gcc,sparc-xxxx-linux-gnu-g 等等 10。
交叉编译器的使用方法 使用方法跟本地的gcc差不多,但有一点特殊的是:必须用-L和-I参数指定编译器用spar c系统的库和头文件,不能用本地X86 的库(头文件有时可以用本地的)。
例子: sparc-xxxx-linux-gnu-gcc test.c -L/path/to/sparcLib -I/path/to/sparcInclude 出售舆情监控系统 如果图片或页面不能正常显示请点击这里 【文章投稿】【收藏此页】【飞诺社区】【发表评论】【关闭】 上一篇:sizeof用法汇总 下一篇:检查perl安装了哪些模块的2种方法 Linux应用技巧推荐文章 用Kickstart批量安装Linux armlinux内核空间分布图总结 用SE Toolkit监控Solaris性能 星际2最佳搭档 千元内1GB显存5770实测 Linux中实现局域网远程接入 XenServer 5.5安装心得http://www.diybl.com/course/6_system/linux/linuxjq/20110901/559283.html2011-12-9 17:04:52GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名-Linux应用技巧 - diybl 局域网络的架构 Windows server 2008网络负载均衡集群 Linux常用术语
php开发memcached linux-2.6.14 在s3c44b0x 上的移植及其问题分析 谈win2003与win2008启动原理及双启动的故障解决 在RHEL3的单机上安装oracle9iRAC FreeBSD下Apache运行模型分析及性能调整 创建能够超时的socket连结API 我的Redhat8.0美化方案 文 章 评 论 暂无数据! 请.