Linux Compling C++;使用命令行编写代码

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命令做什么修改来编译我的源文件

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 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。