我有一个像这样的 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
最佳答案
如果你想在你的程序中使用.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
对其进行测试。它应该给出图书馆的位置。
然后在你希望使用这个.so的程序中,做
g++ -L ../code abc.cpp -lsomelib
我不确定您的生产代码,但一般来说,如果您的程序用作库,那么它可能没有作为 main
函数的入口点。
关于c++ - .So 文件 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16832382/