我有一个像这样的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
答案 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
函数的入口点。