GCC
命令行详?/p>
1
?/p>
gcc
包含?/p>
c/c++
编译?/p>
gcc,cc,c++,g++,gcc
?/p>
cc
是一样的?/p>
c++
?/p>
g++
是一样的,一?/p>
c
程序?/p>
?/p>
gcc
编译?/p>
c++
程序就用
g++
编译
2
?/p>
gcc
的基本用?/p>
gcc test.c
这样将编译出一个名?/p>
a.out
的程?/p>
gcc test.c -o test
这样将编译出一个名?/p>
test
的程序,
-o
参数用来指定?/p>
成程序的名字
3
。为什么会出现
undefined reference to 'xxxxx'
错误?/p>
首先这是链接错误,不是编译错误,也就是说如果只有这个错误,说?/p>
你的程序源码本身没有问题?/p>
是你用编译器编译时参数用得不对,
你没
有指定链接程序要用到得库?/p>
比如你的程序里用到了一些数学函数,?/p>
么你就要在编译参数里指定程序要链接数学库?/p>
方法是在编译命令行里
加入
-lm
?/p>
4
?/p>
-l
参数?/p>
-L
参数
-l
参数就是用来指定程序要链接的库,
-l
参数紧接着就是库名,那么库
名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是
m
?/p>
他的库文件名?/p>
libm.so
?/p>
很容易看出,
把库文件名的?/p>
lib
和尾
.so
去掉
就是库名了?/p>
好了现在我们知道怎么得到库名了,
比如我们自已要用?/p>
一个第三方提供的库名字?/p>
libtest.so
?/p>
那么我们只要?/p>
libtest.so
拷贝?/p>
/usr/lib
里,编译时加?/p>
-ltest
参数,我们就能用?/p>
libtest.so
库了(当?/p>
要用
libtest.so
库里的函数,我们还需要与
libtest.so
配套的头文件?/p>
。放
?/p>
/lib
?/p>
/usr/lib
?/p>
/usr/local/lib
里的库直接用
-l
参数就能链接了,但如?