快速入门例子
g++ –c a.cpp 编译文件,生成目标文件 a.o
g++ a.o –o abc 连接 并重命名为可执行文件 abc
(g++ -c a.cpp -o a 之后 g++ a 会保存的,亲验)
g++ a.cpp 编译连接一起,生成a.out
g++ a.cpp –o hello 生成a.out并命名为hello
涉及静态动态库的后面说
编译或汇编源文件,但不作连接.
编译器输出对应于源文件的目标文件.
缺省情况下, G++通过用.o替换源文件名后缀产生目标文件名. 可以使用-o选项选择其他名字
样例:
g++ -c a.cpp 输出文件 a.o
g++ -c a.cpp -o a 输出文件 a
1. 可执行文件为a.out
2. source.suffix的目标文件是source.o
3. 汇编文件是 source.s
4. 而预处理后的C源代码送往标准输出.
样例:
g++ -c a.cpp -o a 输出文件 a
定义宏,类似于#define的功能
样例: g++ a.cpp -Db=10 #define b 10
在库文件的搜索路径列表中添加dir 目录.,可添加多个
2. 连接器在标准搜索目录中寻找这个库文件,库文件的真正名字是lib librarytest(动态库) lib librarytest(静态库)
3. 是按严格文件名搜索 ,如果so文件名带版本号,需要创建软连接
4. 编译时搜索目录包括 :
1. 用户以`-L'选项指定的路径
2.LIBRARY_PATH ( 是环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径)
3. 系统目录 /lib /usr/lib
5. 运行时搜索目录包括 :
1.LD_LIBRARY_PATH(用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径)
2.ld.so.cache &/etc/ld.so.conf
3.系统目录 /lib /usr/lib
生成一个共享库文件
g++ -shared -o libtest.sobdb.o
编译器生成位置无关目标码,适用于动态连接(dynamic linking)