.So文件Linux

时间:2013-05-30 09:24:02

标签: c++ shared-libraries dynamic-library

我有一个像这样的C ++ .so文件结构:(动态库)

Folder 1 (.d and .o extention files)
Folder 2 (.d and .o extention files)
Folder 3 (.d and .o extention files)
processsignal.so
makefile
objects
sources...

你们知道如何编译和运行上面的文件,我试图编译.so并运行makefile,但它仍然是一个错误:

make:
make: Nothing to be done for `Cartographie/ProcessingFit.d'.

通过G ++编译:

g++ libsignalProcessing.so 
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

1 个答案:

答案 0 :(得分:0)

如果要在程序中使用.so文件,则需要使用gcc编译器的-l标志。在此之前,您需要将LD_LIBRARY_PATH设置为.so

的位置

例如,如果在/ home / code目录中有libsomelib.so,则将LD_LIBRARY_PATH设置为LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/code,然后设置为export LD_LIBRARY_PATH。 使用echo $LD_LIBRARY_PATH进行测试。它应该给图书馆位置。

然后在您希望使用此程序的程序中执行 g++ -L ../code abc.cpp -lsomelib

我不确定您的生产代码,但通常情况下,如果您的程序用作库,那么它可能没有main函数的入口点。