2016-08-01 7 views
0

я бегу ./myprogram, и это дает мне предупреждение:Как правильно связать программу с библиотекой

Warning: Your program was compiled with SimGrid version 3.13.90, and then linked against SimGrid 3.13.0. Proceeding anyway. 

Try 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 связать библиотеку simgrid таким образом:

target_link_libraries(CSim2Sim simgrid) 

Почему myprogram до сих пор связывает против SimGrid 3.13.0 (он не существует в /usr/lib в то время как SimGrid 3.13.90 делает)?

UPDATE:

Команда locate libsimgrid.so в ternimal дает:

/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 

ответ

1

сообщение кажется багги, это выглядит как приложение было на самом деле скомпилирован с 3.13.0, и связан с libsimgrid 3.13.90 , Приказ был инвертирован в сообщении, я исправлю это.

Это может быть проблема с вашим включением, когда вы скомпилируете свой код, я думаю. Убедитесь, что вы не используете старые файлы msg.h/simgrid_config.h при компиляции своего приложения (возможно, в/usr/include?).

Чтобы проверить, вы можете найти SIMGRID_VERSION_PATCH в файле simgrid_config.h. он должен быть 90 в недавнем, а не 0.