开发者

What's wrong in creating/using a shared library with gcc here?

In libname.h:

int add_libname(int, int);

In libname.c:

#include开发者_JAVA百科 "libname.h"

int add_libname(int a, int b)
{
  return a+b;
}

I can build the shared library this way:

gcc -shared -fPIC libname.c -o libname.so

But I can't use it in another programe test.c:

#include <stdio.h>
#include "libname.h"

int main(int argc, char* argv[])
{
  printf("%d\n", add_libname(1,5));
}

Reporting undefined reference to add_libname when I try to build it..

What's wrong here?


Because add_libname takes (int, int) you're giving it (1+5 = 6) or just (int)

I think you meant add_libname(1, 5);

Also to compile it correctly you must use gcc like so

gcc -o myapp test.c -L. -lname

the lib part of libname is ignored as it is implicit


To create a shared library use these

   gcc -fPIC -c libname.c 
   it gives warning: position independent code and libname.o file is generated.

and now type these command,

    gcc -shared libname.so libname.o

libname.so ( the shared library is created with .so extension). To use the shared library

gcc -I/give the path of libname.h  sourcefile.c  /give the path of your .so file

example if your c file is file.c and the header file libname.h is in c:\folder1\project and your libname.so (shared library) is in c:\folder\project2 then

gcc -I/cygdrive/c/folder1/project file.c /cygdrive/c/folder/project/libname.so

this is the gcc command to be used while using the shared library.

Thank you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜