gcc使用原理 gcc工作原理 预处理gcc -E 编译 gcc -S 汇编 gcc -c 链接 gcc 无参数 gcc c源文件.c -o 生成可执行文件名称 不指定可执行文件名称默认生产a.out gcc编译时指定 -I头文件位置(头文件在
gcc使用原理
gcc工作原理 预处理gcc -E 编译 gcc -S 汇编 gcc -c 链接 gcc 无参数
gcc c源文件.c -o 生成可执行文件名称 不指定可执行文件名称默认生产a.out
gcc编译时指定 -I头文件位置(头文件在可执行文件目录中不需要指定位置)
-D 指定宏位置
-O1默认优化 -O3最高级优化 … 静态库 命名规则 lib+库名字+.a
制作静态库步骤 生成.o文件 gcc c源文件 -c
打包.o文件 ar rcs lib静态库文件名字.a + 上一步生成的.o文件
发布 给客户 静态库文件和头文件两部分
客户拿到静态库和头文件后,可以自己再写个c程序来调用静态库和头文件里面的函数,然后再gcc可执行文件发布出去,发布出去不用再给别人前面的静态库和头文件了(这是优点),因为在生成可执行文件就打包进去了。所以静态库缺点就是容量大,如果库文件或者头文件发生改变,要重新生成可执行文件,比较麻烦。
… 动态库(共享库) 命名规则 lib+库名字+.so
制作动态库步骤 生成.o文件 gcc c源文件 -fPIC -c
打包.o文件 gcc -shared -o lib静态库文件名字.so + 上一步生成的.o文件
客户拿到动态库和头文件后,可以自己再写个c程序,用动态库连接器调用(ldd + 可执行文件 可查看,最后一排就是动态库连接器ld.so.conf,其实也是一个库文件在/etc下,一般都是把自己写的动态库位置文件夹路径,写到这个文件里面,然后再更新系统库文件ldconfig -v,不然客户发布的可执行文件找不到库报错)动态库和头文件里面的函数,然后再gcc可执行文件发布出去