上海网站备案注销,校园网站建设申请,局网站建设工作总结,成都商铺装修设计公司一、编译过程#xff1a;
1#xff09;预处理#xff0c;生成.i文件
2#xff09;转换成为汇编语言#xff0c;生成.s文件
3#xff09;汇编变为目标代码#xff08;机器代码#xff09;#xff0c;生成.o文件
4#xff09;链接目标代码#xff0c;生成可执行程… 一、编译过程
1预处理生成.i文件
2转换成为汇编语言生成.s文件
3汇编变为目标代码机器代码生成.o文件
4链接目标代码生成可执行程序。 二、常用编译选项
tips选项必须独立给出‘-pg’和‘-p -g’完全不同 -c编译或汇编源文件不做连接。
G -c test.cpp输出test.o -o file制定输出文件为file -Wall 输出所有编译警告最好加上 -DmacroXXX定义宏。 -shared生成一个共享库文件
g -shared -o libtest.so test.o -fPIC生成位置无关目标代码适用于动态连接。 -llibrarytest连接名字为librarytest的库
真正名字是liblibrarytest.so(a) so是动态库a是静态库。
严格按照文件名搜索版本号要创建软连接。
编译搜索目录
用户-L指定 LIBRARY_PATH系统目录/lib /usr/lib
运行搜索目录
LD_LIBRARY_PATHld.so.cache /etc/ld.so.conf 系统目录 /lib /usr/lib
动态库和静态库同名优先动态库。 -Ldir添加库文件搜索路径 -Idirinclude添加头文件搜索路径 -g产生调试信息 -olevel优化级别一般用o2 三、静态库、共享库
静态库一些.o文件打包在被连接后成为程序的一部分。
编译方法
-g -c test.cpp
-ar res libtest.a test.o
链接方法
-g -Wall -o test testMain.cpp -ltest -L./ 共享库链接的时候不会被复制到程序中。
编译方法
g -c fPIC test.cpp
//要动态 g -shared -WI, -soname, libtest.so, -o libtest.so.1.0.1 test.o
mv libtest.so.1.0.1 /usr/lib
sudo ldconfig || ll /user/lib/libtest.so //创建一个软连接。
链接方法
g -o test test.cpp ./libtest.so -ldx_cxx 四、常用命令
ldd显示程序依赖的同台共享库。
file查看文件格式信息。
ldconfig在搜寻目录下搜索出可以共享的动态链接库