簡體   English   中英

CMAKE/MAKEFILE:/usr/bin/x86_64-linux-gnu-ld:找不到-lfftw3f

[英]CMAKE/MAKEFILE : /usr/bin/x86_64-linux-gnu-ld : Cannot find -lfftw3f

我正在服務器上使用 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)

謝謝

通常,提供以前開發的程序使用它的庫與您實際需要包含一些要使用的庫的文件之間存在差異。

CMake 通過查詢屬於它的#include <blahblah.h>文件來檢查是否安裝了庫的開發版本。 如果它沒有找到它們,那么它會抱怨。

問題很可能是這樣的:您已經在系統上安裝了庫,但沒有安裝開發版本,以及使用它進行開發所需的所有包含文件。 可能您需要安裝一些libfftw3-dev package 或類似名稱來安裝包含文件,這樣才能使用該庫進行開發。

您從源代碼編譯並進行安裝的程序通常會在 /usr/local/bin、/usr/local/lib 等中結束,您可能會遇到問題,因為 Debian/Ubuntu 中的用戶安裝路徑是 /usr而不是 /usr/local。 因此,不要使用默認模式編譯程序,而是執行以下操作:

cd $HOME && mkdir local local/src local/bin local/lib && cd local/src
wget link_the_file.tar.gz && tar -zxvf the_file.tar.gz
cd the_file_decompressed && ./configure --prefix=$HOME/local --enable-type-prefix
make && make install

確保 $HOME/Path 在您的路徑中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM