使用命令行编译C ++代码

时间:2012-11-05 06:39:47

标签: linux g++

使用下面的命令编译我的c ++代码,并使用OpenCV库,我的命令就像

    opencv main.cpp -o binary_name

其中opencv是一个别名命令,如

alias opencv="g++ `pkg-config --cflags opencv`  `pkg-config --libs opencv`"

但如果我忘记了“-o binary_name”命令,请删除我的源文件。为什么会发生这种情况......?

我应该对上面的alias命令进行哪些修改来编译我的源文件,如

   opencv main.cpp binary_name  

提前致谢.......

2 个答案:

答案 0 :(得分:1)

您可以使用函数而不是别名,并使用参数:

function opencv() { g++ `pkg-config --cflags opencv` `pkg-config --libs opencv` "$1" -o "$2"; }

答案 1 :(得分:1)

gcc的参数的顺序是重要的,应该在库之前给出源文件或目标文件,并且在使用较低级别的库之前应该使用更高级别的库调用库

所以你应该用

编译
    g++ -Wall -g $(pkg-config --cflags opencv) main.cpp \
              $(pkg-config --libs opencv) -o binaryprog

但你真的应该使用Makefile,或者至少有一个shellcript。

不要忘记-Wall选项以获取所有警告。改进代码,直到编译器没有给出警告。使用-g选项获取调试信息,以便能够使用gdb ./binaryprog调试程序。

调试程序后,将-g替换为-O3(或者-O2 -g),以要求GCC优化生成的代码。

相关问题