私はLinuxとMac OS Xでコンパイルする必要のあるライブラリに取り組んでいます。今までは "-g"でコンパイルしても問題ありませんでした。Macで-O2のみでコンパイルすると未定義のシンボル
私はいくつかの最適化(「-O2」)を使用してコンパイルしようとしましたが、それがLinuxでうまく動作しますが、私は私のライブラリとプログラムをリンクしようとすると、私は、MAC OS Xの下未定義のシンボルを取得
は誰もい私は何を探すべきなのか?
/usr/bin/gcc -std=c99 CMakeFiles/prod-cons.dir/prod-cons.c.o -o prod-cons -rdynamic -L/home/claferri/dev/build/src ../src/libckaapi.a -lpthread -Wl,-rpath,/home/claferri/dev/build/src
:ここ
154:00000018 C _the_symbol
377: U _the_symbol
は、ライブラリを使用するプログラムのためのLinuxでのコンパイル行さ:
nm mylib.a | grep _the_symbol
これは、LinuxおよびMacのために同じこと(無linuxの下に下線をリード)を返します
およびMacの場合:
/usr/bin/gcc -std=c99 -Wl,-search_paths_first -headerpad_max_install_names -fPIC CMakeFiles/prod-cons.dir/prod-cons.c.o -o prod-cons -L/Volumes/Data/claferri/Work/build/src ../src/libckaapi.a /usr/lib/libpthread.dylib
リンカのエラーを示すMac版のnmでは、ライブラリにシンボルが含まれていると表示されていますか? –
はい!私は何が起こっているのかは分かりません。 – claf
"_the_symbol"はソースコードに表示されていますか?初期化されていないグローバル変数ですか?あなたのソースコードで参照されていますか? –