如何在代码块中 link ta-lib (Ubuntu 14.04)?

How to link ta-lib in codeblocks (Ubuntu 14.04)?

我已经在我的 ubuntu 14.04 中安装了 ta-lib,如官方文档所述

extract tar.gz
./configure
./make
./make install

它在 /usr/local/include/ta-lib 中安装了 ta-lib。然后我将 header 添加到单独的 talib #include <ta-lib/ta_libc.h> 并编译代码没有错误。但是当我添加 ta-lib 示例代码时

    #include <ta-lib/ta_libc.h>
    TA_RetCode retCode;
    retCode = TA_Initialize( );
    if( retCode != TA_SUCCESS )
    printf( "Cannot initialize TA-Lib (%d)!\n", retCode );
    else
    {
        printf( "TA-Lib correctly initialized.\n" );

        /* ... other TA-Lib functions can be used here. */

        TA_Shutdown();
    }

它给出了一个 undefined 错误,我知道这是由于代码块中的链接问题造成的。所以我在 project>build options> linker settings>link libraries 中手动添加了 ta-lib,在 other linker options 中手动添加了 -lta-lib,但现在它给出了这个错误

/usr/bin/ld: cannot find -lta-lib
./configure
./make
./make install

不会安装包。

./configure
make
sudo make install

会安装它。这可能就是你所做的。

It installed ta-lib in /usr/local/include/ta-lib

不完全是。它将库的头文件安装在 /usr/local/include/ta-lib 它安装了静态和共享 /usr/local/lib.

下的图书馆

I manually added ta-lib in project>build options> linker settings>link libraries and -lta-lib to other linker options

这些是做同样事情的替代方法。两者都会导致 要传递给链接器的选项 -lta-lib,因此您的链接器命令行 会显示此选项两次。

该选项指示链接器搜索名为 libta-lib.so 的共享库,或者失败 也就是说,在每个链接器搜索中都有一个名为 libta-lib.a 的静态库 您指定的目录(如果有),然后在其默认搜索中 目录。

您没有指定链接器搜索目录,但没关系,因为 /usr/local/lib,安装库的地方,链接器的其中一个 默认搜索目录。

尽管如此,链接器仍会抱怨找不到该选项的库 -lta-lib因为/usr/local/lib中安装的共享库是 libta_lib.so 静态库是 libta_lib.a。不是 libta-lib.{so|a}.

所以 :-

  • 构建选项 -> Linker settings 中将 ta-lib 替换为 ta_lib - > Link 图书馆
  • 构建选项中删除-lta-lib -> Linker 设置 -> 其他链接器选项