私のプログラムを別の静的ライブラリと静的にコンパイルしたいのですが、この例ではzeromqを使用しています。CMakeは `/ usr/local/lib`の` .a`ファイルを動的にリンクします
/usr/bin/c++ CMakeFiles/test.dir/test.cpp.o \
-o test -rdynamic /usr/local/lib/libzmq.a
:私はmkdir build && cd build && cmake ..
-- /usr/local/lib/libzmq.a
を実行したときにここに私のCMakeLists.txt
cmake_minimum_required(VERSION 2.6)
add_executable(test test.cpp)
find_library(ZMQ NAMES libzmq.a)
message(STATUS ${ZMQ})
target_link_libraries(test ${ZMQ})
があるそれは私がlink.txt
ファイルを調べる場合は、ライブラリーを動的にリンクされ.a
ファイルを検索します奇妙なことに、ファイルを別のディレクトリに移動すると、/usr/lib
と答えてcmake ..
もう一度、それはライブラリへの新しいパス探し出し:
-- /usr/lib/libzmq.a
をしかし、今では魔法の静的リンクに変更されました:
/usr/bin/c++ CMakeFiles/test.dir/test.cpp.o \
-o test -rdynamic -Wl,-Bstatic -lzmq -Wl,-Bdynamic
同じことは、私はにリンクしてる他のライブラリに適用されます。
/usr/local/lib
のすべてのライブラリが動的にリンクされているのはなぜですか?
find_libraryによって返されたパスは間違いなく正しいです。私はあなたの更新されたcmakeファイルを使ってみました、そして、それは*両方の場所で動的であるようになっています。私もcmakeを最新バージョンにアップグレードしましたが、それでも問題は解決しません。 – morloch