linux gcc/g++编译器使用

来源:互联网 发布:淘宝店铺新手教学 编辑:程序博客网 时间:2024/05/17 09:14

1.首先应会设置几个好用的环境变量;

CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/test/include  #此环境变量用来设置头文件包含路径,这样就不用编译的时候添加路径咯;

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/test/lib #此环境变量用来设置动态库的包含路径;

LIBRARY_PATH=$LIBRARY_PATH:/home/test/lib #此环境变量用来设置静态库的保护路径;


把上面三个环境变量设置语句写到一个.sh文件中;

然后使用source xxx.sh执行操作;这样环境变量就其作用啦,记得一定要用source命令哦。

为什么要用source命令呢? 其实source命令只是在当前的bash环境中执行参数文件名中的语句,它与.命令是一样的。

如果直接执行bash脚本将会在一个子shell环境中执行相关的命令,所以基本不会影响到当前的shell环境,所以可能设置就不起作用了。


2.使用g++编译.c/.cpp文件;

如果存在test.c/test.cpp,使用如下语句编译即可:

g++ -o test test.c 

也可以先编译成目标文件;

g++  -c test.c

g++ -o test test.o


3.使用g++编译.c/.cpp为静态库文件;

如果存在libtest.cpp,它使用了a.cpp,b.cpp文件中的函数或类;

首先编译为目标文件:

g++ -c libtest.cpp

g++ -c a.cpp

g++ -c b.cpp

然后生成.a文件:

ar cr libtest.a libtest.o a.o b.o


4.使用g++编译.c/.cpp为动态库;

如果存在libtest.cpp,它使用了a.cpp,b.cpp文件中的函数或类;

首先编译为目标文件:

g++ -c libtest.cpp

g++ -c a.cpp

g++ -c b.cpp

然后生成.so文件:

g++  --shared -fPCI -o libtest.so libtest.o a.o b.o

当然也可以一次性生成:

g++ --shared -fPCI -o libtest.so libtest.cpp a.cpp b.cpp


5.经常会有用的-I 与 -L选项;

-I选项: -I/root/include ,此用来引入一个头文件包含目录;

-L选项:-L/root/lib ,此用来引入一个库文件包含目录;