Получение неопределенной ссылки в общей библиотеке - PullRequest
0 голосов
/ 13 марта 2012

Я создал пример общей библиотеки, которая использует 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

Теперь, как я могу устранить эти ошибки. Что-то не так в создании общей библиотеки или компиляции примера программы. Пожалуйста, помогите ....!

1 Ответ

2 голосов
/ 13 марта 2012

Добавить -lresume перед libcurl

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