C:编译一些没有main()失败的对象(对于共享库)?

时间:2011-03-27 03:36:31

标签: c gcc shared-libraries

根据我所学到的,我需要按照这一步准备制作共享库:

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中以供包含,但我还没有看到宏是否有效。

1 个答案:

答案 0 :(得分:20)

您需要-c

gcc -fPIC -c libfoo.c 

用于生成目标文件。

您可能需要查看:http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html