Linker CMAKE DSO链接

Linker CMAKE DSO链接,linker,cmake,shared-libraries,ld,Linker,Cmake,Shared Libraries,Ld,我对cmake完全陌生。在svn更新之后,也更新到了binutils,我怀疑这是导致问题的原因,我得到了一个错误,我以前成功编译并使用过该程序 Linking CXX executable gmsh /usr/bin/ld: /usr/local/lib/liblapack.a(dgesvd.o): undefined reference to symbol '_gfortran_concat_string@@GFORTRAN_1.0' /usr/bin/ld: note: '_gfortran

我对cmake完全陌生。在svn更新之后,也更新到了binutils,我怀疑这是导致问题的原因,我得到了一个错误,我以前成功编译并使用过该程序

Linking CXX executable gmsh
/usr/bin/ld: /usr/local/lib/liblapack.a(dgesvd.o): undefined reference to symbol '_gfortran_concat_string@@GFORTRAN_1.0'
/usr/bin/ld: note: '_gfortran_concat_string@@GFORTRAN_1.0' is defined in DSO /usr/lib/libgfortran.so.3 so try adding it to the linker command line
/usr/lib/libgfortran.so.3: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[2]: *** [gmsh] Error 1
make[1]: *** [CMakeFiles/gmsh.dir/all] Error 2
make: *** [all] Error 2
也许和这有关

我有一个最新的archlinux binutils-2.23-1

我试图编辑ccmake中的行。菜单点击[c]后,原始选项被还原,因此我无法将/usr/lib/libgfortran.so.3添加到GMSH_EXTERNAL_LIBRARIES变量中,以便[g]生成新的makefile

我还尝试添加了一些在cmake irc聊天中推荐的选项,但最终没有成功

 cmake . -DCMAKE_LINK_FLAGS=-Wl,--add-needed

导致相同的错误。我能做什么


其他信息:make VERBOSE=1

要将库添加到link命令,可以使用。显然,在这种情况下,您需要:

target_link_libraries(gmsh ${LINK_LIBRARIES} gfortran)

要将库添加到link命令,可以使用。显然,在这种情况下,您需要:

target_link_libraries(gmsh ${LINK_LIBRARIES} gfortran)

你有没有试过做什么-DCMAKE\u LINK\u LIBRARY\u FLAG=gfortran?@Fraser我刚刚试过,但它产生了完全相同的错误。我想我需要实现的就是将-lgfortran添加到ld调用中。这通常可以通过在适当的CMakeLists中将gfortran添加到调用中来实现。txt@Fraser如果你回答这个问题,我会接受的,因为这很有效!target_link_librariesgmsh${link_LIBRARIES}gfortranDid您可以尝试制作-DCMAKE\u LINK\u LIBRARY\u FLAG=gfortran?@Fraser我刚刚试过,但它产生了完全相同的错误。我想我需要实现的就是将-lgfortran添加到ld调用中。这通常可以通过在适当的CMakeLists中将gfortran添加到调用中来实现。txt@Fraser如果你回答这个问题,我会接受的,因为这很有效!target_link_librariesgmsh${link_LIBRARIES}gfortran