У меня есть исполняемый файл (который получаю компилируя MyProg.c) и раньше я к нему статически линковал библиотеку (libMyL.so)
Вот так создаётся библиотека:
gcc -Wall -fPIC -c f1.c f2.c f3.c -Ilib
gcc -shared f1.o f2.o f3.o -o libMyL.so -lrt -lpthread
gcc MyProg.c -L. -lMyL -o MyProg
Соответственно, чтобы программа запускалась на другом компе libMyL.so должен лежать например в /lib.
Всё работает. Но теперь мне нужно слинковать желательно абсолютно всё статически. Т.е. чтобы не было зависимости от библиотек и можно было бы перенести на компьютер с такой же архитектурой.
Т.е. например, если я хочу собрать исполняемый файл и запихнуть в него все библиотеки я делаю так:
Содержимое файла Hello.c
#include <stdio.h>
int main( int argc, char* argv[] )
{
printf( "Hello world!" );
return 0;
}
gcc -static Hello.c -o Hello
Файл Hello получается 500 Кб. Всё ок. Аналогично мне нужно и с MyProg + libMyL.so. Нужно видимо чтобы и в MyProg всё статически было собрано и в libMyL.so запихнуть все зависимости. То, что получится большой объём - ничего страшного. Как мне это реализовать?