GCC 使用库文件名进行链接】的更多相关文章

使用 GCC 进行 C/C++ 代码编译时,如果代码中使用到了库函数,需要使用 -l 选项指定该库函数所在的库.如:-lm.-lrt.-lpthread等.这种方式使用的是库的缩写.一个库的文件名如果是:libxxx.so 或 libxxx.a,则可以使用 -lxxx 进行链接.这种规则很常见,但是缺点也很明显.假设在一台 Linux 机器上,同时具有 libxxx.so 和 libxxx.a,GCC 会优先链接 libxxx.so.虽然,GCC 也提供了 -static 选项可以强制链接静态库…
动态库尤其是共享库在 Linux 环境下普遍存在库文件名包含版本号的情况,比如 Linux 环境下经常会发现一个共享库的真实文件名是 libfoo.so.1.1.0,而同时会有多个指向该真实库文件的软连接短文件名:libfoo.so.1.1.libfoo.so.1.libfoo.so.那么我们在使用 GCC 开发程序时如果要用这样的共享库输出的函数,就需要到动态链接这样的共享库(我们这里不考虑静态链接的方式),那么和库文件就有很大关系.另一方面,JNA 中载入共享库,根据其文档我们一般都只使用库…
链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件.在链接过程中,它必须把符号(变量名.函数名等一些列标识符)用对应的数据的内存地址(变量地址.函数地址等)替代,以完成程序中多个模块的外部引用. 而且,链接器也必须将程序中所用到的所有C标准库函数加入其中.对于链接器而言,链接库不过是一个具有许多目标文件的集合,它们在一个文件中以方便处理. 当把程序链接到一个链接库时,只会链接程序所用到的函数的目标文件.在已编译的目标文件之外,如果创建自己的链接库,可以使用 ar 命…
原文地址:mingw qt作者:孙1东 不使用Qt SDK,使用mingw编译qt源代码所遇问题及解决方法: configure -fast -release -no-exceptions -no-rtti -no-stl -no-qt3support -no-opengl -no-multimedia -no-webkit -no-script -no-scripttools -nomake tools -nomake examples -nomake demos -nomake docs -…
转自GCC 静态库和动态库 //hello.c #include void print_hello() { printf("HelloWorld "); } //main.c #include #include "hello.h" int main() { print_hello(); printf("%d",HELLO); return 0; } //hello.h #define HELLO 9999 void print_hello();…
一.编译方式的示例详解 1. 编译C代码 代码如下:main.c /*!  ******************************************************************************  * \File  *   main.c  * \Brief  *   C codes  * \Author  *   Hank  *******************************************************************…
本文主要解决以下几个问题 1).为什么要使用库? 2).库的分类 3).创建自己的库 为什么要使用库? 或许大家对自己初学 Linux时的情形仍记忆尤新吧.如果没有一个能较好的解决依赖关系的包管理器,在Linux下安装软件将是一件及其痛苦的工作.你装a包时,可能会提示你要先装b包,当你费尽心力找到b包时,可能又会提示你要先安装c包.我就曾被这样的事搞的焦头烂额,至今一提起rpm仍心有余悸,头皮发麻.说是一朝被蛇咬,十年怕井绳怕也不为过.Linux下之所以有这许多的依赖关系,其中一个开发原则真是功…
gcc工作流程 1.预处理 gcc -E 2.编译 gcc -S 3.汇编 gcc -c 4.链接 没参数制作静态库: 1.命名规则:libMyName.a2.制作步骤: ①.生成.o gcc -c *.c ②.打包.c ar rcs 静态库的名字 *.o3.使用:main.c -L-l gcc main.c (库) -LlibPath -libname -o app -Iinclude 制作动态库 1.动态库后缀:.so   ---libmyname.so 2.制作步骤: ①生成与位置无关的代…
Linux GCC中,如果lib a依赖b,b又依赖a,链接的时候无论a放在前,还是b放在前,都会提示unrefrence. 解决办法就是: 链接的时候a链接两次,即: -la -lb -la…
GCC编译过程 一个C/C++文件要经过预处理(preprocessing).编译(compilation).汇编(assembly).和连接(linking)才能变成可执行文件. gcc的常用选项 -E 只预处理,不会编译.汇编.链接 -S 编译到汇编语言不进行汇编和链接 -c 编译和汇编,不会链接 -o 指定输出文件名为file,这个名称不能跟源文件名同名 -static 此选项对生成的文件采用静态链接 -g 生成调试信息,GNU调试器可利用该信息. -share 此选项将尽量使用动态库,所…