Compling C++ code using command line

大城市里の小女人 提交于 2019-12-31 06:07:52

问题


A am using below command to compile my c++ code and which is using OpenCV libraries and my command is just like

    opencv main.cpp -o binary_name

where opencv is an alias command like

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

but if I forget the "-o binary_name" the command delete my source file. Why this happening....?

What modification should I made on the above alias command to compile my source file like

   opencv main.cpp binary_name  

Thanks in advance.......


回答1:


The order of arguments to gcc is important, source or object files should be given before libraries, and libraries should be invoked with higher level libraries before the lower level libraries they are using.

So you should compile with

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

But you really should use a Makefile, or at least have a shellscript.

Don't forget the -Wall option to get all warnings. Improve your code till no warnings are given by the compiler. Use the -g option to get debugging information, to be able to use gdb ./binaryprog to debug your program.

Once your program is debugged, replace -g by -O3 (or perhaps by -O2 -g) to ask GCC to optimize the generated code.




回答2:


You can use a function instead of an alias, and use arguments:

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


来源:https://stackoverflow.com/questions/13227126/compling-c-code-using-command-line

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!