【发布时间】:2022-11-15 23:07:21
【问题描述】:
我想在我的 C 代码中使用 ta_lib 函数并尝试导入 ta_lib 函数。头文件已正确导入,但我无法让链接器找到实际的库。 我想用 MAKE 和 gcc 进行编译过程。
首先我导入标题
#include <ta-lib/ta_libc.h>
然后当我需要使用一个函数时
TA_ADOSC(0, CSV_LENGTH - 1, temp_high, temp_low, temp_close, temp_volume, 3, 10, &beginIdx, &endIdx, tmp_adosc);
该程序使用我的 makefile 编译得很好
# create CC variable
CC = gcc
# create CFLAGS variable
CFLAGS = -L/usr/local/lib -Wall -g
LDLIBS = -lta_lib -I/usr/local/include -lm
output: main.o
$(CC) $(CFLAGS) -o output main.o
main.o: main.c
$(CC) $(LDLIBS) -c main.c
# target: dependencies
# action
clean:
rm -f \*.o output
一旦我尝试运行make,我得到以下信息
gcc -L/usr/local/lib -Wall -g -o output main.o
/usr/bin/ld: main.o: in function `calculate_indicators': main.c:(.text+0x226): undefined reference to `TA_ADOSC'
collect2: error: ld returned 1 exit status
make: \*\*\* \[Makefile:10: output\] Error 1
根据我的理解,我需要修复到共享库的链接。
库已安装:
ldconfig -p | grep libta_lib.so
返回以下内容
libta_lib.so.0 (libc6,x86-64) => /usr/local/lib/libta_lib.so.0
libta_lib.so.0 (libc6,x86-64) => /lib/libta_lib.so.0
libta_lib.so (libc6,x86-64) => /usr/local/lib/libta_lib.so
libta_lib.so (libc6,x86-64) => /lib/libta_lib.so
因为我是 C 的新手并且使用外部库我找不到问题所在
【问题讨论】:
标签: c makefile shared-libraries shared ta-lib