将libgfortran与CMAKE链接的便携式方式
Portable way of linking libgfortran with CMAKE
我的一个可执行文件需要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)
会发现libfftw3.a
/usr/local/lib
很好)。
编辑:
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
复制到他们的usrlocallib
目录中
看起来你要么错过了 linux 发行版上的开发包,它应该安装.so
链接,要么在 cmake 查找时缺少此类链接所在的路径。尝试找到libgfortran.so
链接,通常它位于.so.3
所在的同一位置,如果找不到它,请安装缺少的开发包,如果可以检查为什么该路径不包含在cmake中。
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- 在c代码之间共享数据的最佳方式
- 在C++中将函数压缩为两种方式
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 创建引用向量的优雅方式
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 不同/较旧的处理器运行c++代码的方式是否不同
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 重载方法的方式会在使用临时调用时生成编译器错误
- 在reactor中存储eventHandlers的最佳方式是什么
- 如何以优化的方式同时迭代两个间距不相等的数组
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 为什么C++有不同的变量初始化方式?
- 用cmakelist.txt在clion上以一种不错的便携式方式配置sdl2
- 标记C 声明的一种便携式方式,为C 11所接受的弃用
- 从Nvidia PTX访问bool(C++11)阵列的便携式方式
- 将libgfortran与CMAKE链接的便携式方式