我是一个愚蠢的新手。
我有一个名为file.c的文件,其函数为my_putstr(char *)和my_strlen(char *)
my_putstr()使用write()(unistd.h)
写入参数我想从file.c创建一个库,所以我做了:
gcc -fPIC -c file.c
gcc -shared -o libfile.so file.o
然后我创建了一个main.c文件并从中调用了my_putstr()。 我试图编译并链接我的.so
gcc -L. -lfile main.c -o test
但我得到了对my_putstr()
的未定义引用我尝试在其中创建一个带有my_putstr()和my_strlen()的.h,并将其包含在main中但我得到了同样的错误。
抱歉愚蠢的问题。
Havaniceday。
答案 0 :(得分:1)
你的问题缺乏信息,但我可以先建议你
gcc main.c ./libfile.so -Wl,-rpath . -o test
如果此操作失败,您的来源有问题。 如果此时一切正常,请尝试
gcc main.c -L . -lfile -Wl,-rpath . -o test
如果这将输出未定义的引用,那么你的lib路径中可能已经有了类似libfile.a的东西,而没有my_putstr(可能来自之前的实验)。
如果一切正常,那么你的链接器是明智的,可以订购哪些库提供给命令字符串,你必须记住,然后库总是在使用这个库的对象之后。