我们在生成可执行文件时是否同时使用 libstdc++.a 和 libstdc++.so ?
Do we use libstdc++.a and libstdc++.so at the same time when generating executable?
如果我选择做:
gcc my.cpp -lstdc++
它 link 与 libstdc++ 有关。所以,对吗?但是代码中有一些 c/c++ 初始化部分(global/static variables/objects、atexit() 函数等),似乎它们也应该需要 linking 到 libstdc++。一个文件。
所以我的问题是,linking 命令是否总是出于某种原因使用 libstdc++.a,即使我指定 link 使用 .so 文件?
谢谢。
gcc my.cpp -lstdc++
这通常是错误的做法。相反,您应该这样做:
g++ my.cpp
It links with libstdc++.so, right?
取决于 GCC 的配置和安装方式,但通常是这样。
But there're some c/c++ initialization part of code(global/static variables/objects, atexit() functions, etc), seems they should also require linking to libstdc++.a file.
这是错误的。你从哪里得到这个错误的印象?
So my question is, does the linking command always uses libstdc++.a
不,通常不会。
如果我选择做:
gcc my.cpp -lstdc++
它 link 与 libstdc++ 有关。所以,对吗?但是代码中有一些 c/c++ 初始化部分(global/static variables/objects、atexit() 函数等),似乎它们也应该需要 linking 到 libstdc++。一个文件。
所以我的问题是,linking 命令是否总是出于某种原因使用 libstdc++.a,即使我指定 link 使用 .so 文件?
谢谢。
gcc my.cpp -lstdc++
这通常是错误的做法。相反,您应该这样做:
g++ my.cpp
It links with libstdc++.so, right?
取决于 GCC 的配置和安装方式,但通常是这样。
But there're some c/c++ initialization part of code(global/static variables/objects, atexit() functions, etc), seems they should also require linking to libstdc++.a file.
这是错误的。你从哪里得到这个错误的印象?
So my question is, does the linking command always uses libstdc++.a
不,通常不会。