64 ビット Linux (debian) マシンで cmake と gcc を使用してこのプロジェクトをビルドしようとすると、リンカーからエラーが発生します。
Linking C executable ../../../../cpsadamsx
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlopen'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlclose'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlerror'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlsym'
collect2: ld returned 1 exit status
make[2]: *** [cpsadamsx] Error 1
make[1]: *** [sundials/examples/cpodes/serial/CMakeFiles/cpsadamsx.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
どうやら dlopen、dlclose、dlerror、および dlsym は libdl.so への参照です。そのライブラリは /lib64/libdl.so.2 にありますが、見つからないのはなぜですか?
通常の「./configure;」だったでしょうか。作る; make install'-path LIBS 変数を設定して、configure コマンドを次のように発行することもできたはずです (と思います)。
export LIBS=-ldl && ./configure
しかし、どうすれば今それを行うことができますか?
アップデート:
そのため、(または少なくとも)ライブラリが見つかったようですが、問題のシンボルは含まれていません。/lib にある 32 ビット ライブラリで試してみませんか?
/lib64/libdl.so.2 を逆アセンブルして、参照 dlopen などがあることを確認する方法はありますか?
この問題により、ビルド ツールが正しいバージョンのライブラリに導かれるようになりました。