我正在使用下面的命令编译我的 C++ 代码,它使用的是 OpenCV 库,我的命令就像
opencv main.cpp -o binary_name
其中 opencv 是像
这样的别名命令alias opencv="g++ `pkg-config --cflags opencv` `pkg-config --libs opencv`"
但是如果我忘记了“-o binary_name”,命令会删除我的源文件。为什么会这样……?
我应该对上面的别名命令做什么样的修改来编译我的源文件
opencv main.cpp binary_name
提前致谢......
最佳答案
gcc
的参数顺序很重要,源文件或目标文件应该在库之前给出,并且库应该在较低级别的库之前用较高级别的库调用他们正在使用。
所以你应该编译
g++ -Wall -g $(pkg-config --cflags opencv) main.cpp \
$(pkg-config --libs opencv) -o binaryprog
但您确实应该使用 Makefile
,或者至少有一个 shellscript。
不要忘记 -Wall
选项来获取所有警告。改进您的代码,直到编译器不发出警告为止。使用 -g
选项获取调试信息,以便能够使用 gdb ./binaryprog
调试您的程序。
一旦您的程序被调试,将-g
替换为-O3
(或者可能替换为-O2 -g
)以请求GCC优化生成的代码。
关于linux - 使用命令行编译 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13227126/