链接静态库而不是动态库

发布于 2024-12-20 05:47:46 字数 344 浏览 1 评论 0原文

我有一个名为 FOO 的目录,其中包含 Xa 和 X.so 。我只想选Xa 因此,在我的 makefile 中,我使用以下内容来链接它

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ $< -static -lX

但是当我这样做时,我收到以下错误

/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc

如何正确完成此操作。一种方法是给出Xa的abs路径还有其他方法吗?

I have a directory named FOO which has X.a and X.so . I want to choose only X.a.
So in my makefile I am using the following to link it

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ 
lt; -static -lX

But when I do that, I get the following error

/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc

How should this be done properly. One way is to give abs path of X.a. Is there some other way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七色彩虹 2024-12-27 05:47:46

试试这个:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ 
lt; -Wl,-Bstatic -lX -Wl,-Bdynamic

Try this:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ 
lt; -Wl,-Bstatic -lX -Wl,-Bdynamic
东京女 2024-12-27 05:47:46

如果我正确阅读 ld 的文档,则不必指定绝对路径,但可以使用其全名指定库,如下所示:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ 
lt; -l:X.a

If I'm reading the documentation for ld correctly, you don't have to specify the absolute path, but you can specify a library using its full name as such:

EXE: OBJ.o
     g++ -L/PATH/TO/FOO -o $@ 
lt; -l:X.a
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文