这些是我的C代码,只需打印“Hello"信息。我想将mylib.c作为共享库。
[mylib.c]
#include <stdio.h>
int mylib();
int main(){
mylib();
return 0;
}
int mylib(){
printf("### Hello I am mylib #####\n");
return 0;
}
[drive.c]
#include <stdio.h>
int mylib();
int main(){
mylib();
return 0;
}
在最火的时候,我使用下面的命令行编译mylib.c来制作mylib.o
gcc –fPIC –g –c –Wall mylib.c
然后试图像这样将它共享为
gcc -shared -Wl,-soname,libmylib.so.1 -o /opt/lib/libmylib.so.1.0.1 mylib.o -lc
我做ldconfig
更新/etc/ld.so.cache
最后我用mylib编译了drive.c链接但链接器显示错误
gcc -g -Wall -Wextra -pedantic -I./ -L./ -o drive drive.c –lmylib
/usr/bin/ld: cannot find –lmylib
有人告诉我如何编译它?
答案 0 :(得分:0)
在我的方式中,您必须遵循一些方法在C中使用共享库。
首先,我创建了一个名为&#34; shared_library.h&#34;的头文件,在这个文件中我引入了一个名为&#34; method&#34;的函数。作为这个库的一个功能。
代码如下:
/*-------This is starting of shared_library.h file-----------*/
void method();
/*-------------This is ending of shared_library.h file--------*/
然后我在另一个名为&#34; shared_library.c&#34;的文件中定义了该方法。代码中的定义是:
/*-------------This is starting of shared_library.c file---------*/
#include "shared_library.h"
void method()
{
printf("Method is called");
}
/*-------------This is ending of shared_library.c file---------*/
最后,标题&#34; shared_library.h&#34;准备好了。我在名为&#34; main.c&#34;的主C文件中使用该库。 &#34; main.c&#34;的内容如下:
/*-------------This is starting of main.c file----------------*/
#include <stdio.h>
#include "shared_library.h"
int main()
{
method();
return 0;
}
/*-------------This is ending of main.c file----------------\*/
答案 1 :(得分:0)
我发现了这篇文章ld cannot find an existing library。
如果我更改为gcc -g -Wall -Wextra -pedantic -I./ -L/opt/lib -o drive drive.c –l:libmylib.so.1