LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Problem using shared library........ (https://www.linuxquestions.org/questions/linux-newbie-8/problem-using-shared-library-702199/)

webquinty 02-04-2009 05:36 AM

Problem using shared library........
 
Hello,

I have developed a shared library, and it compile fine.

Quote:

cc src/libpcican.c -fPIC -shared -O2 -Wall -Wl,-soname,libpcican.so.0 -lc -I. -o libpcican.so.0.6
ln -sf libpcican.so.0.6 libpcican.so
And later, install it...

Quote:

cp libpcican.so.0.6 /usr/lib64/libpcican.so.0.6
ln -sf /usr/lib64/libpcican.so.0.6 /usr/lib64/libpcican.so.0
ln -sf /usr/lib64/libpcican.so.0 /usr/lib64/libpcican.so
cp libpcican.h /usr/include/libpcican.h
chmod 644 /usr/include/libpcican.h
/sbin/ldconfig
But my problem is when I want to use it. I have a easy program, and when I compile with -lpcican, compiler return me this message:

Quote:

gcc -c -m32 -pipe -c -g -O2 -Wall -W -D_REENTRANT -L/lib -L/usr/lib -L/usr/local/lib -I/usr/include -I. -Itc1_task -Itc2_task -Itc3_task -Itc4_task -o taskman.o taskman.c
gcc -c -m32 -pipe -c -g -O2 -Wall -W -D_REENTRANT -L/lib -L/usr/lib -L/usr/local/lib -I/usr/include -I. -Itc1_task -Itc2_task -Itc3_task -Itc4_task -o "tc1_task/tc1_task1.o" "tc1_task/tc1_task1.c"
gcc -c -m32 -pipe -c -g -O2 -Wall -W -D_REENTRANT -L/lib -L/usr/lib -L/usr/local/lib -I/usr/include -I. -Itc1_task -Itc2_task -Itc3_task -Itc4_task -o "tc1_task/tc1_task1_init.o" "tc1_task/tc1_task1_init.c"
gcc -c -m32 -pipe -c -g -O2 -Wall -W -D_REENTRANT -L/lib -L/usr/lib -L/usr/local/lib -I/usr/include -I. -Itc1_task -Itc2_task -Itc3_task -Itc4_task -o "tc1_task/tc1_task2.o" "tc1_task/tc1_task2.c"
gcc -c -m32 -pipe -c -g -O2 -Wall -W -D_REENTRANT -L/lib -L/usr/lib -L/usr/local/lib -I/usr/include -I. -Itc1_task -Itc2_task -Itc3_task -Itc4_task -o "tc1_task/tc1_task2_init.o" "tc1_task/tc1_task2_init.c"
gcc -c -m32 -pipe -c -g -O2 -Wall -W -D_REENTRANT -L/lib -L/usr/lib -L/usr/local/lib -I/usr/include -I. -Itc1_task -Itc2_task -Itc3_task -Itc4_task -o "tc1_task/tc1_task3.o" "tc1_task/tc1_task3.c"
gcc -c -m32 -pipe -c -g -O2 -Wall -W -D_REENTRANT -L/lib -L/usr/lib -L/usr/local/lib -I/usr/include -I. -Itc1_task -Itc2_task -Itc3_task -Itc4_task -o "tc1_task/tc1_task3_init.o" "tc1_task/tc1_task3_init.c"

g++ -m32 -g -O2 -Wall -L/lib -L/usr/lib -L/usr/local/lib -o cyclic_can-v1 taskman.o tc1_task/tc1_task1.o tc1_task/tc1_task1_init.o tc1_task/tc1_task2.o tc1_task/tc1_task2_init.o tc1_task/tc1_task3.o tc1_task/tc1_task3_init.o tc2_task/tc2_task1.o tc2_task/tc2_task2.o tc2_task/tc2_task3.o tc3_task/tc3_task1.o tc3_task/tc3_task2.o tc3_task/tc3_task3.o tc4_task/tc4_task1.o tc4_task/tc4_task2.o tc4_task/tc4_task3.o -lrt -ldl -lpthread -lpcican
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libpcican.so when searching for -lpcican
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../lib/libpcican.so when searching for -lpcican
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/../lib/libpcican.so when searching for -lpcican
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../libpcican.so when searching for -lpcican
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/libpcican.so when searching for -lpcican
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libpcican.so when searching for -lpcican
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lpcican
collect2: ld returned 1 exit status
make: *** [cyclic_can-v1] Error 1
any advice????

Thank you very much.

colucix 02-04-2009 07:45 AM

Code:

g++ -m32 -g -O2 -Wall -L/lib -L/usr/lib -L/usr/local/lib <omitted> -lrt -ldl -lpthread -lpcican
Maybe... you have installed the shared library in /usr/lib64, but among the compiler options that directory is not specified as a search path. Have you tried to add the -L/usr/lib64 option in the compiler flags?
Code:

skipping incompatible /usr/lib/libpcican.so when searching for -lpcican
Moreover this error message can be triggered from a 32-bit version of libpcican in /usr/lib which is incompatible because it is an ELF 32-bit object, when a ELF 64-bit is expected. Just a guess.

webquinty 02-04-2009 09:33 AM

Quote:

Originally Posted by colucix (Post 3431816)
Code:

g++ -m32 -g -O2 -Wall -L/lib -L/usr/lib -L/usr/local/lib <omitted> -lrt -ldl -lpthread -lpcican
Maybe... you have installed the shared library in /usr/lib64, but among the compiler options that directory is not specified as a search path. Have you tried to add the -L/usr/lib64 option in the compiler flags?
Code:

skipping incompatible /usr/lib/libpcican.so when searching for -lpcican
Moreover this error message can be triggered from a 32-bit version of libpcican in /usr/lib which is incompatible because it is an ELF 32-bit object, when a ELF 64-bit is expected. Just a guess.

You are right, that is the problem.
I have compiled library with -m32 too, and install in correct folder, and now works fine.

Thanks a lot.


All times are GMT -5. The time now is 07:35 AM.