13

I have installed gcc 4.6 using macports. The prefix 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.

1
  • DYLD_LIBRARY_PATH is for dynamic loading at run time, not compile time. Commented Oct 16, 2011 at 21:44

3 Answers 3

7

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.

Sign up to request clarification or add additional context in comments.

2 Comments

How are you building? If I just use command line g++, this environment variable has no effect.
the LIBRARY_PATH variable should be used, without "-L"
4

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.

1 Comment

My question is more about how to set /opt/local/lib in gcc's library search path. Gcc is build in /opt/local so I'd expect it to be int he search path but it isn't.
2

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 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.