这里把编译时常用的一些集中起来,方便查找。
例1.最简单的编译例子。
默认是编译成32位程序
gcc -o xcl test.c
编译成64位:
gcc -m64 -o xcl test.c
各系统编译64位程序开关如下:
AIX 64BIT -maix64
HP-UX 64bit -mlp64
Solaris 64bit -m64
Linux 64bit -m64
例2.如果想要能用gdb调试程序,可参考下面的命令行:
gcc -m64 -Wall -O -g -o xcl test.c
参数说明:
-Wall 输出所有的警告信息。
-O 在编译时进行优化。
-g 表示编译debug版本。
例3.高低版本发布兼容性处理.
如在RHEL6之类高版本系统上编译,但程序要发布到低版本RHEL4之类的系统上运行,
思考可能会因为glibc版本太低出现Floating Point Exception运行时错误,
可以在编译时加上参数"--hash-style=sysv"来解决
gcc -m64 -Wall -O -g -Wl, --hash-style=sysv -o xcl test.c
例4.如在代码中引用了其它文件,如other.c。则在编译时要将其加进去。
gcc -m64e -o xcl test.c other.c
小技巧,当不能确定时,可以用 gcc -MM test.c 查出相依赖的.h文件,就能找到相关的.c文件了。
这招也可用在写Makefile时。
例5.如引用到其它的lib或.h头文件
gcc -m64 -Lcompenv/lib -ldemo -Icompenv/include -o xcl test.c
参数说明:
-Lcompenv/lib 引用了当前compenv目录下lib目录中的库文件
-ldemo 编译时要链接当前compenv目录下lib中的libdemo.so动态链接库。
注意Unix/Linux下动态的命令规则为: “lib”开头“.so”结尾。
-Icompenv/include 引用了compenv目录下lib目录中的.h文件
除了"-I"指定头引用的文件目录,还可以用"CPATH"环境变量完成相同功能。
export CPATH=$CPATH:/xcl/test/include
指定后,就不要在gcc时指定"-I"参数了.
例6.gcc编译器对新标准的支持,要注意。只有在编译时指定-std参数,才能正确的编译新特性。
//c99标准
gcc -std=c99 -m64 -o xcl test.c
//C++ 11标准
g++ -std=c++11 -m64 -o xcl test.cpp
注意c是小写,不要弄混了。
例1.最简单的编译例子。
默认是编译成32位程序
gcc -o xcl test.c
编译成64位:
gcc -m64 -o xcl test.c
各系统编译64位程序开关如下:
AIX 64BIT -maix64
HP-UX 64bit -mlp64
Solaris 64bit -m64
Linux 64bit -m64
例2.如果想要能用gdb调试程序,可参考下面的命令行:
gcc -m64 -Wall -O -g -o xcl test.c
参数说明:
-Wall 输出所有的警告信息。
-O 在编译时进行优化。
-g 表示编译debug版本。
例3.高低版本发布兼容性处理.
如在RHEL6之类高版本系统上编译,但程序要发布到低版本RHEL4之类的系统上运行,
思考可能会因为glibc版本太低出现Floating Point Exception运行时错误,
可以在编译时加上参数"--hash-style=sysv"来解决
gcc -m64 -Wall -O -g -Wl, --hash-style=sysv -o xcl test.c
例4.如在代码中引用了其它文件,如other.c。则在编译时要将其加进去。
gcc -m64e -o xcl test.c other.c
小技巧,当不能确定时,可以用 gcc -MM test.c 查出相依赖的.h文件,就能找到相关的.c文件了。
这招也可用在写Makefile时。
例5.如引用到其它的lib或.h头文件
gcc -m64 -Lcompenv/lib -ldemo -Icompenv/include -o xcl test.c
参数说明:
-Lcompenv/lib 引用了当前compenv目录下lib目录中的库文件
-ldemo 编译时要链接当前compenv目录下lib中的libdemo.so动态链接库。
注意Unix/Linux下动态的命令规则为: “lib”开头“.so”结尾。
-Icompenv/include 引用了compenv目录下lib目录中的.h文件
除了"-I"指定头引用的文件目录,还可以用"CPATH"环境变量完成相同功能。
export CPATH=$CPATH:/xcl/test/include
指定后,就不要在gcc时指定"-I"参数了.
例6.gcc编译器对新标准的支持,要注意。只有在编译时指定-std参数,才能正确的编译新特性。
//c99标准
gcc -std=c99 -m64 -o xcl test.c
//C++ 11标准
g++ -std=c++11 -m64 -o xcl test.cpp
注意c是小写,不要弄混了。