使用gcc链接共享库

gol*_*ean 29 linker gcc shared-libraries

我在Windows目标上使用Real View编译器工具(RVCT 3.2)创建了一个共享库(*.so).然后我尝试在linux系统上使用gcc将这个*.so文件链接到我的应用程序.

将此共享库与我的应用程序li​​nux链接的gcc选项是什么?

我的问题是,是-shared选项,用作

gcc -shared myfile.so
Run Code Online (Sandbox Code Playgroud)

...,用于创建SO文件或链接SO文件?我相信它创造了类似的东西:

gcc -lmyfile.so
Run Code Online (Sandbox Code Playgroud)

这够了吗?或者是否有任何其他开关告诉链接器它是一个动态库(共享对象)?

小智 33

对我有用的是:

gcc -L. -l:myfile.so
Run Code Online (Sandbox Code Playgroud)

  • -L{path to file contains library} -l${library name} 如果我在 /home/newhall/lib/ 中有一个名为 libmine.so 的库,那么我会执行以下操作将它链接到我的程序中:$gcc - o myprog myprog.c -L/home/newhall/lib -lmine [参考站点](https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_C_libraries.html) (4认同)
  • 对于那些想知道冒号的人,它会让链接器查找具有指定名称的文件,而不是查找名称的变体.请参阅/sf/answers/3397845041/. (4认同)

jpa*_*cek 15

gcc -lmyfile应该足够了(前提是您的库已命名libmyfile.so).链接器尽可能搜索共享对象,AFAIK更喜欢它们.

  • @jpalecek如果文件名的扩展名为.dll,它是否有效? (3认同)
  • 添加选项`-L/path/to/so/folder /`为`.so`添加搜索文件夹 (2认同)