【发布时间】:2021-01-02 03:03:02
【问题描述】:
我在服务器上使用 cmake 和 makefile 运行一些 c 代码,并且我正在使用一个库,但是当我运行 make 时,我得到了这个错误:
/usr/bin/x86_64-linux-gnu-ld: cannot find -lfftw3f
该库已经安装并位于/usr/lib/x86_64-linux-gnu/,有什么建议吗?这是我的 CMAKE 文件
cmake_minimum_required(VERSION 3.5)
project(sfa C)
set(CMAKE_C_STANDARD 11)
set(LIBSFA src/pqueue.c src/sfa_file_loaders.c src/sfa_trie.c src/sfa_node.c src/ts.c src/calc_utils.c src/sfa_query_engine.c src/sfa_file_buffer.c src/sfa_file_buffer_manager.c src/dft.c)
add_library(libsfa STATIC "${LIBSFA}")
add_executable(sfa src/sfa.c )
link_directories(/usr/lib/x86_64-linux-gnu/)
target_link_libraries(sfa libsfa m fftw3f jemalloc readline)
谢谢
【问题讨论】:
-
安装库后你运行
ldconfig了吗?cmake一切都很好,但如果您可以发布 [生成]Makefile的相关部分,它可能会有所帮助。而且,make命令本身的输出(即make将显示它使用的 exact 命令)。你说图书馆在/home/usr/lib/x86_64-linux-gnu/是字面意思 是真的还是/home前缀是错字? -
您使用的是什么操作系统 [和发行版]?
libfftw*的正常位置是/usr/lib64(在(例如)linux fedora 下)。我注意到您的安装位置(以及ld命令上的x86_64-linux-gnu-*前缀)看起来更像是交叉构建安装而不是原生安装。你可以在你的库上使用file[和/或readelf] 命令来验证它是为正确的拱门构建的吗? -
@CraigEstey 我在 ubuntu 服务器上运行代码,抱歉库实际上在 /usr/lib/x86_64-linux-gnu/ 中,我认为自安装以来架构不是问题已成功完成...
-
好吧,那么。它应该可以工作,但事实并非如此。我建议的事情呢?运行
ldconfig。发布Makefile。发布make输出。在文件上运行file?尝试使用-t运行ld。/usr/lib/x86_64-linux是否有ld.so.conf条目?另外,您可以在strace下运行ld。 -
我没有 sudo 权限,所以 ldconfig 不起作用:\
标签: c ubuntu gcc makefile cmake