c - 在共享库中获取 undefined reference

标签 c linux shared-libraries undefined-reference

我创建了一个使用 libcurl 的示例共享库。这是创建共享库的相应 Makefile:

CC= arm-none-linux-gnueabi-gcc
CPPFLAGS= -I/home/yuvi/development/libcurl/curl-7.24.0/build_arm/include -Wall -g 
LDFLAGS= -L/home/yuvi/development/libcurl/curl-7.24.0/build_arm/lib \
    -l:libcurl.a -l:libssh2.a -l:libssl.a -l:libcrypto.a  \
    -L/home/yuvi/development/CD/VAR-SOM-OM35_VAR-SOM-OM37_VAR-SOM-AM35/Software/Linux/host_tools/linux/arm-2009q3/arm-none-linux-gnueabi/libc/lib -lrt 

all: resume.o libresume.so

resume.o:
    $(CC) $(CPPFLAGS) -c -fPIC resume_download.c -o resume_download.o $(LDFLAGS) 

libresume.so:
    $(CC)  -shared -Wl,-soname,libresume.so.1 -o libresume.so  resume_download.o

clean:
    rm -f resume_download.o libresume.so

现在我已经创建了一个要使用这个共享库的示例程序,该程序的 Makefile 是:

CC= arm-none-linux-gnueabi-gcc
CPPFLAGS= -I/home/yuvi/development/libcurl/curl-7.24.0/build_arm/include -Wall -g 
LDFLAGS= -L/home/yuvi/development/libcurl/curl-7.24.0/build_arm/lib \
    -l:libcurl.a -l:libssh2.a -l:libssl.a -l:libcrypto.a  \
    -L/home/yuvi/development/CD/VAR-SOM-OM35_VAR-SOM-OM37_VAR-SOM-AM35/Software/Linux/host_tools/linux/arm-2009q3/arm-none-linux-gnueabi/libc/lib -lrt \
    -L/home/yuvi/development/libcurl/sample_program -lresume 

all:
    $(CC) $(CPPFLAGS) resume_app.c -o app $(LDFLAGS)

但是如果我制作上面的 Makefile,我会收到以下错误:

/home/yuvi/development/libcurl/sample_program/libresume.so: undefined reference to `curl_easy_setopt'
/home/yuvi/development/libcurl/sample_program/libresume.so: undefined reference to `curl_global_cleanup'
/home/yuvi/development/libcurl/sample_program/libresume.so: undefined reference to `curl_easy_init'
/home/yuvi/development/libcurl/sample_program/libresume.so: undefined reference to `curl_easy_perform'
/home/yuvi/development/libcurl/sample_program/libresume.so: undefined reference to `curl_easy_cleanup'
/home/yuvi/development/libcurl/sample_program/libresume.so: undefined reference to `curl_global_init

现在如何消除这些错误,创建共享库或编译示例程序是否有问题。 请帮助......!

最佳答案

在libcurl前加上-lresume

-lresume  -l:libcurl.a -l:libssh2.a -l:libssl.a -l:libcrypto.a  .... 

关于c - 在共享库中获取 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683890/

相关文章:

c - 为什么先决条件的顺序在 makefile 中很重要?

c++ - ^ =在c/c++中是什么意思?

linux - 延迟不阻止 Bash 函数同时执行

c++ - 有人在 RHEL 上构建过omniORB吗?

c - 矩阵加法程序。如果我输入一个换行符,它会跳过一行并进入第三行

c - 调试器报告 SDL 在初始化时生成的那些线程是什么?

linux - 无法克隆存储库 : FATAL: R any gitolite-admin gitolite DENIED by fallthru

c++ - 在 std::function 中存储函数指针

c++ - 算法与预编译引用实现的速度比因计算机而异

c++ - dlopen - undefined symbol 错误