如何正确地 link 针对库编程
How correctly to link program against library
我 运行 ./myprogram
它给了我一个警告:
Warning: Your program was compiled with SimGrid version 3.13.90, and then linked against SimGrid 3.13.0. Proceeding anyway.
尝试ldd myprogram
,结果如下:
libsimgrid.so.3.13.90 => /usr/lib/libsimgrid.so.3.13.90 (0x00007f338ef47000)
然后我转到 usr/lib
并在终端中输入 ll *sim*
:
lrwxrwxrwx 1 ken ken 21 июл 28 19:29 libsimgrid.so -> libsimgrid.so.3.13.90*
-rwxrwxr-x 1 ken ken 12307480 июл 28 19:29 libsimgrid.so.3.13.90*
在CMakeLists.txt
我link库simgrid
中是这样的:
target_link_libraries(CSim2Sim simgrid)
为什么 myprogram
仍然 link 反对 SimGrid 3.13.0
(它不存在于 /usr/lib
而 SimGrid 3.13.90
存在)?
更新:
命令 locate libsimgrid.so
最终给出:
/home/ken/Downloads/simgrid-master/lib/libsimgrid.so
/home/ken/Downloads/simgrid-master/lib/libsimgrid.so.3.13.90
/home/ken/SimGrid/lib/libsimgrid.so
/home/ken/SimGrid/lib/libsimgrid.so.3.13.90
/usr/lib/libsimgrid.so
/usr/lib/libsimgrid.so.3.13.90
该消息似乎有问题,看起来您的应用程序实际上是使用 3.13.0 编译的,并链接到 libsimgrid 3.13.90。消息中顺序颠倒了,我会修改的。
我认为这可能是您编译代码时包含的问题。请检查你在编译你的应用程序时没有使用旧版本的 msg.h/simgrid_config.h 文件(也许 /usr/include 中还有一个?).
要检查,您可以在 simgrid_config.h 中查找 SIMGRID_VERSION_PATCH。最近的应该是90,不是0.
我 运行 ./myprogram
它给了我一个警告:
Warning: Your program was compiled with SimGrid version 3.13.90, and then linked against SimGrid 3.13.0. Proceeding anyway.
尝试ldd myprogram
,结果如下:
libsimgrid.so.3.13.90 => /usr/lib/libsimgrid.so.3.13.90 (0x00007f338ef47000)
然后我转到 usr/lib
并在终端中输入 ll *sim*
:
lrwxrwxrwx 1 ken ken 21 июл 28 19:29 libsimgrid.so -> libsimgrid.so.3.13.90*
-rwxrwxr-x 1 ken ken 12307480 июл 28 19:29 libsimgrid.so.3.13.90*
在CMakeLists.txt
我link库simgrid
中是这样的:
target_link_libraries(CSim2Sim simgrid)
为什么 myprogram
仍然 link 反对 SimGrid 3.13.0
(它不存在于 /usr/lib
而 SimGrid 3.13.90
存在)?
更新:
命令 locate libsimgrid.so
最终给出:
/home/ken/Downloads/simgrid-master/lib/libsimgrid.so
/home/ken/Downloads/simgrid-master/lib/libsimgrid.so.3.13.90
/home/ken/SimGrid/lib/libsimgrid.so
/home/ken/SimGrid/lib/libsimgrid.so.3.13.90
/usr/lib/libsimgrid.so
/usr/lib/libsimgrid.so.3.13.90
该消息似乎有问题,看起来您的应用程序实际上是使用 3.13.0 编译的,并链接到 libsimgrid 3.13.90。消息中顺序颠倒了,我会修改的。
我认为这可能是您编译代码时包含的问题。请检查你在编译你的应用程序时没有使用旧版本的 msg.h/simgrid_config.h 文件(也许 /usr/include 中还有一个?).
要检查,您可以在 simgrid_config.h 中查找 SIMGRID_VERSION_PATCH。最近的应该是90,不是0.