LINUX.ORG.RU

Проблема со статической линковкой программы в которую нужно слинковать еще и динамическую библиотеку


0

1

У меня есть исполняемый файл (который получаю компилируя 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 запихнуть все зависимости. То, что получится большой объём - ничего страшного. Как мне это реализовать?



Последнее исправление: g-71 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.