demo_lib.h void fun();можно связать скомпилированную статическую библиотеку динамически
demo_lib.cpp
#include<iostream>
void fun(){
std::cout << "I am in demo_lib::fun()" << std::endl;
}
составил статическую библиотеку
g++ -c demo_lib.cpp -o demo_lib.o
ar rcs libdemo_lib.a demo_lib.a
main.c
#include "demo_lib.h"
int main(){
fun();
return 0;
}
скомпилирован статический
g++ -static main.cpp -L. -ldemo_lib
size of a.out is 1702697 => static linked by linker
скомпилирован без статического
g++ main.cpp -L. -ldemo_lib
size of a.out is 9247 => is demo_lib linked dynamically ??
почему разница в размерах здесь ??
я думаю, что библиотека каст связана статичным, когда мы использовали -static параметр компилятора
И когда мы не CPP библиотеки динамически компонуется кроме demo_lib.
В demo_lib обоих случаев является связан статическим и только библиотека каст дифф
мы можем связать статическим скомпилирован библиотеки как динамический ??
означает ли это, что стандартная связь стандартной библиотеки является общей?
Возможный дубликат [Когда использовать динамические и статические библиотеки] (http://stackoverflow.com/questions/140061/when-to-use-dynamic-vs-static-libraries) – SevenBits
Я не согласен с тем, что это хорошо dupe, этот вопрос касается WHY, размер исполняемого файла такой же, как и в разных библиотечных формах. –