根据我所学到的,我需要按照这一步准备制作共享库:
gcc -fPIC libfoo.c -o libfoo.o
然后我链接它。我曾尝试制作一个makefile来帮助完成这些步骤,但现在似乎发生了错误。
当我运行make文件时会发生这种情况:
foo@box:~/Projects/so$ gcc -fPIC ./libfoo.c -o libfoo.o
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
如何在没有main函数的情况下编译库文件,因为它不是一个程序而且是一个库?
如果它有助于我的程序基本上是这个(解释)
(stdio and openssl headers here)
(debugging macro definitions here)
(two functions, gettime() and opensslrandom() defined here)
我似乎也很难理解宏,因为它们会在共享库中最终在共享库中无用吗?我将它们包含在libfoo.h中以供包含,但我还没有看到宏是否有效。
答案 0 :(得分:20)
您需要-c
gcc -fPIC -c libfoo.c
用于生成目标文件。
您可能需要查看:http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html