gpt4 book ai didi

c++ - 将 libgfortran 与 CMAKE 链接的可移植方式

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:52 27 4
gpt4 key购买 nike

我的一个可执行文件需要 libgfortran.so。通常我只是将 -lgfortran 开关添加到编译行,它会自动与 g++ 链接。但是,我正在尝试使用 CMAKE 查找库:

find_library(GFORTRAN_LIBRARY NAMES gfortran)
target_link_libraries(ncorr_test ${GFORTRAN_LIBRARY})

但是,这无法找到库。事实证明,到目前为止唯一可行的方法是像这样包含整个库名称:

find_library(GFORTRAN_LIBRARY NAMES libgfortran.so.3)
target_link_libraries(ncorr_test ${GFORTRAN_LIBRARY})

然后,它将正确链接:

/usr/bin/c++ ... /usr/lib/x86_64-linux-gnu/libgfortran.so.3 ...

但是,包括整个 .so.3 不是很便携。有谁知道更好的方法吗?通常我需要使用的库只安装在 /usr/local/lib 中并搜索没有“lib”的库名称和扩展名(即 find_library(FFTW_LIBRARY NAMES fftw3) 会在 /usr/local/lib 中找到 libfftw3.a 就好了)。

编辑:

find_library(GFORTRAN_LIBRARY NAMES libgfortran.so) 也不起作用。到目前为止,只有 libgfortran.so.3 有效。

使用 locate libgfortran 输出:

/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.so
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.spec
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortranbegin.a
/usr/lib/x86_64-linux-gnu/libgfortran.so.3
/usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0
/usr/local/MATLAB/R2014a/sys/os/glnxa64/libgfortran.so.3
/usr/local/MATLAB/R2014a/sys/os/glnxa64/libgfortran.so.3.0.0
/usr/share/doc/libgfortran-4.8-dev
/usr/share/doc/libgfortran3
/var/lib/dpkg/info/libgfortran-4.8-dev:amd64.list
/var/lib/dpkg/info/libgfortran-4.8-dev:amd64.md5sums
/var/lib/dpkg/info/libgfortran3:amd64.list
/var/lib/dpkg/info/libgfortran3:amd64.md5sums
/var/lib/dpkg/info/libgfortran3:amd64.postinst
/var/lib/dpkg/info/libgfortran3:amd64.postrm
/var/lib/dpkg/info/libgfortran3:amd64.shlibs
/var/lib/dpkg/info/libgfortran3:amd64.symbols

编辑 2:

现在我只需要用户将 libgfortran.a 复制到他们的 usr\local\lib 目录

最佳答案

看起来你要么错过了你的 linux 发行版上的开发包,它应该安装 .so 链接,或者当 cmake 查找时,这样的链接所在的路径丢失了。尝试找到 libgfortran.so 链接,通常它位于 .so.3 所在的同一位置,如果找不到它,请安装缺少的开发包,如果你可以检查为什么该路径未包含在 cmake 中。

关于c++ - 将 libgfortran 与 CMAKE 链接的可移植方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com