1

我有一个这样的 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
4

1 回答 1

0

如果要在程序中使用 .so 文件,则需要使用-lgcc 编译器的标志。在您这样做之前,您需要将 设置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

于 2013-05-30T10:31:23.140 回答