c++ - Can compile in Ubuntu but not in Mac OS X -
i built dynamic library (.so file) on ubuntu 12.04. let's call test.so. had test.cpp file, calls library functions. first compiled test.cpp test.o by:
g++ test.cpp -o -c test.o it succeeded. compiled test.o test.so by:
g++ -shared test.o -o test.so also succeeded.
i did similar thing on mac os x.
i first got test.o by:
g++ test.cpp -o -c test.o then
g++ -dynamiclib test.o -o test.dylib this failed, because didn't provide libraries used in test.cpp. modified it:
g++ -dynamiclib test.o -o test.dylib -l/path/to/libraries -llibraryname then works.
notice first case, didn't provide such path libraries , specific library used in test.cpp. know why don't need in first case need in second case?
the linker, default options, not behave same on linux , osx. osx linking behave more expect on linux, use following link flag.
-wl,-undefined,dynamic_lookup
Comments
Post a Comment