使用下面的命令编译我的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
提前致谢.......
答案 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优化生成的代码。