Linux Compling C++;使用命令行编写代码
a使用下面的命令编译我的C++代码,使用OpenCV库和我的命令就像< /p>Linux Compling C++;使用命令行编写代码,linux,g++,Linux,G++,a使用下面的命令编译我的C++代码,使用OpenCV库和我的命令就像< /p> 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 -o binary_name
其中opencv是一个别名命令,如
alias opencv="g++ `pkg-config --cflags opencv` `pkg-config --libs opencv`"
但是如果我忘记了“-o binary_name”,那么命令会删除我的源文件。为什么会发生这种情况
我应该对上面的alias命令做什么修改来编译我的源文件
opencv main.cpp binary_name
提前感谢……您可以使用函数而不是别名,并使用参数:
function opencv() { g++ `pkg-config --cflags opencv` `pkg-config --libs opencv` "$1" -o "$2"; }
gcc
的参数顺序很重要,源文件或目标文件应在库之前给出,库应在使用较低级别库之前使用较高级别库进行调用
因此,您应该使用
g++ -Wall -g $(pkg-config --cflags opencv) main.cpp \
$(pkg-config --libs opencv) -o binaryprog
但是您确实应该使用生成文件
,或者至少有一个shell脚本
不要忘记使用-Wall
选项获取所有警告。改进代码,直到编译器不发出警告为止。使用-g
选项获取调试信息,以便能够使用gdb./binaryprog
调试程序
一旦你的程序被调试,用
-O3
(或者用-O2-g
)替换-g
),让GCC优化生成的代码。你可以写一个makefile。你好,谢谢你的回复……那么我应该每次都把这些行添加到我的bash_rc文件中使用吗?你可以这样做。不过,还有一个更好(更通用)的选项是使用make。好的,我会试试你的建议。g++
的参数顺序不正确。看看我的答案!!感谢回复。是否可以将上述命令别名为单个命令,以便我只需键入“alias_command source.cpp binary”即可编译源文件。您可以制作一个shell函数或脚本来完成此操作,但我不建议这样做。最好学会使用make
或其他生成器(因为很快你就会想把代码分成几个翻译单元)。所以对于不同的源代码,我需要使用不同的make文件。我的问题是,即使不是推荐的命令,我是否可以使用单个命令来代替上述命令。或者可以使用Makefile。完全不可以,您可以使用一个Makefile
来处理同一目录中的所有程序。谢谢。我不太熟悉Makefile,无论如何,我会按照您的建议尝试使用Makefile。