如何在ubuntu的代码中链接fftw3库以获取c ++?

时间:2018-03-26 08:17:36

标签: c++ linux ubuntu visual-studio-code fftw

我下载了fftw3 tar文件并解压缩并配置它并在〜/ usr / include /

中进行make和make install

现在我写了一个简单的代码

#include<iostream>
#include <fftw3.h>
int main()
{
    fftw_complex *T=(fftw_complex *)fftw_malloc(sizeof(fftw_complex)*5*5);
    return 0;
}

然后我去了c_cpp_properties.json文件中获取vs代码并更新了它

{
"configurations": [
    {
        "name": "Mac",
        "includePath": [
            "/usr/include",
            "/usr/local/include",
            "${workspaceRoot}"
        ],
        "defines": [],
        "intelliSenseMode": "clang-x64",
        "browse": {
            "path": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceRoot}"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        },
        "macFrameworkPath": [
            "/System/Library/Frameworks",
            "/Library/Frameworks"
        ]
    },
    {
        "name": "Linux",
        "includePath": [
            "/usr/include/c++/5",
            "/usr/include/x86_64-linux-gnu/c++/5",
            "/usr/include/c++/5/backward",
            "/usr/lib/gcc/x86_64-linux-gnu/5/include",
            "/usr/local/include",
            "/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed",
            "/usr/include/x86_64-linux-gnu",
            "/usr/include",
            "~/usr/include/",
            "${workspaceRoot}"
        ],
        "defines": ["_DEBUG"],
        "intelliSenseMode": "clang-x64",
        "browse": {
            "path": [
                "/usr/include/c++/5",
                "/usr/include/x86_64-linux-gnu/c++/5",
                "/usr/include/c++/5/backward",
                "/usr/lib/gcc/x86_64-linux-gnu/5/include",
                "/usr/local/include",
                "/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed",
                "/usr/include/x86_64-linux-gnu",
                "/usr/include",
                "~/usr/include/",
                "${workspaceRoot}"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        }
    },
    {
        "name": "Win32",
        "includePath": [
            "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
            "${workspaceRoot}"
        ],
        "defines": [
            "_DEBUG",
            "UNICODE",
            "_UNICODE"
        ],
        "intelliSenseMode": "msvc-x64",
        "browse": {
            "path": [
                "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include/*",
                "${workspaceRoot}"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        }
    }
],
"version": 3

}

你可以看到我添加了〜/ usr / include的链接 在includepath部分

现在,它仍然显示错误

/tmp/ccBhp7Pq.o: In function `main':
Source1.cpp:(.text+0x11): undefined reference to `fftw_malloc'
collect2: error: ld returned 1 exit status

不知道现在该做什么。 在ubuntu 16.04中运行

1 个答案:

答案 0 :(得分:0)

Microsoft C / C ++ VS Code扩展的Building your code部分说,如果要构建应用程序,则必须将所有必需的参数添加到构建任务&#34; args&# 34;在"tasks.json"

所以只需将 fftw 库名称和路径添加到以下参数中:

...
 "tasks": [
        ...
        "args": [
            ...
            "-lfftw3", "-L~/usr/lib"
        ]
]
...