Tim*_* N. 7 c gcc shared-libraries
根据我的学到,我需要按照这一步准备制作共享库:
gcc -fPIC libfoo.c -o libfoo.o
Run Code Online (Sandbox Code Playgroud)
然后我链接它.我曾尝试制作一个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
Run Code Online (Sandbox Code Playgroud)
如何在没有main函数的情况下编译库文件,因为它不是一个程序而且是一个库?
如果它有助于我的程序基本上这(解释)
(stdio and openssl headers here)
(debugging macro definitions here)
(two functions, gettime() and opensslrandom() defined here)
Run Code Online (Sandbox Code Playgroud)
我似乎也很难理解宏,因为它们会在共享库中最终在共享库中无用吗?我将它们包含在libfoo.h中以包含在内,尽管我还没有看到宏是否有效.
Bri*_*ach 20
你需要 -c
gcc -fPIC -c libfoo.c
Run Code Online (Sandbox Code Playgroud)
用于生成目标文件.
您可以查看:http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html