I have installed gcc 4.6 using macports. The p开发者_Python百科refix is /opt/local
, and I get the expected include path:
#include "..." search starts here:
#include <...> search starts here:
/opt/local/include/gcc46/c++/
/opt/local/include/gcc46/c++//x86_64-apple-darwin10
/opt/local/include/gcc46/c++//backward
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include
/opt/local/include
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1/include-fixed
/usr/include
/System/Library/Frameworks
/Library/Frameworks End of search list.
However, /opt/local/lib
doesn't seem to be in the library search path, so I have to specify it with -L/opt/local/lib
when using g++ on command line:
Library search paths:
/opt/local/lib/gcc46/gcc/x86_64-apple-darwin10/4.6.1
/opt/local/lib/gcc46
/usr/lib
/usr/local/lib
Framework search paths:
/Library/Frameworks/
/System/Library/Frameworks/
This is a problem for other libraries installed with macports. Is there an easy way to add /opt/local/lib
to the library search path? I have tried setting DYLD_LIBRARY_PATH
to no avail. I am using Mac OS X 10.6.8.
in your ~/.profile add the following line:
export LDFLAGS="-L/opt/local/lib"
and run source ~/.profile
in the terminal to reload your profile.
In this way, the -L switch will be detected from gcc/g++ and used automaticaly.
It depends if you want to link your executable dynamic or static against a library. Under OS X you add the libraries as source/object files like this:
Dynamic: g++ -Wall -o myexecutable myfile.cpp /path/to/library.dylib
Static: g++ -Wall -o myexecutable myfile.cpp /path/to/library.a
The best way is to use a build system, for example CMake (which can be installed from macports). And makes it very easy to find libraries, create libraries in a crossplatform way.
I found the easiest way is to set C_INCLUDE_PATH
and LIBRARY_PATH
:
export C_INCLUDE_PATH=/opt/local/include
export CPLUS_INCLUDE_PATH=/opt/local/include
export LIBRARY_PATH=/opt/local/lib
精彩评论