2012-03-13 3 views
0

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

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

+0

Почему вы должны 'resume.o' в качестве цели в то время как фактический объектный файл с именем' resume_download.o'? –

ответ

2

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

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

Спасибо, это сработало :) – Yuvi