LINUX.ORG.RU

Статическая линковка для динамической библиотеки, возможно ли?


0

1

Извиняюсь за немного бредовый вопрос, но мне реально нужна статическая линковка для динамической библиотеки. Я думаю, большинство поймёт о чём, но я уточню

например у нас есть 3 файла: f1.cpp, f2.cpp (а так же их header'ы) и main.cpp

// f1.cpp
#include <iostream>

void f1()
{
	std::cout << "f1 function is called..." << std::endl;
}

// f2.cpp
#include <iostream>

void f2()
{
	std::cout << "f2 function is called..." << std::endl;
}
// main.cpp
#include "f1.h"
#include "f2.h"
#include <iostream>

int main( int argc, char* argv[] )
{
	f1();
	f2();
	return 0;
}

Теперь производим компиляцию и линковку этого:

$ g++ -c f1.cpp
$ g++ -c f2.cpp
$ g++ -c main.cpp
$ g++ -static main.o f1.o f2.o -o rez
В итоге файл rez получился 3.2 Mb. Всё нормально. А теперь я хочу из файлов f1.cpp и f2.cpp создать динамическую библиотеку, но тоже с ключом -static. Но у меня не получается, например, пробую так:

$ g++ -static f1.o f2.o -shared -o olol.so

Как это сделать и можно ли вообще сделать? Спасибо, извиняюсь за ламерский вопрос


Лично я ничего не понял. Ты можешь привести юз-кейс того, чего ты пытаешься достичь?

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от unsigned

You can't statically link shared library

Не всё так просто. Может я ошибаюсь, но я видел шаманства несколько лет назад. И я не вижу причин почему её нельзя прицепить в хвост как-нить, это же PIC, не?

true_admin ★★★★★
()
Ответ на: комментарий от unsigned
Another possible approach is use statifier (http:/statifier.sf.net) or Ermine (http://magicErmine.com)
Both tools take as input dynamically linked executable and as output create self-contained executable with all shared libraries embedded.

память меня не подвела

true_admin ★★★★★
()
Ответ на: комментарий от g-71

По-нормальному - нельзя.

Можно попробовать трюк: распаковать libc.a на объектные файлы и слинковаться с ними. Это, наверное, будет работать на 32-битном x86.

unsigned ★★★★
()
Ответ на: комментарий от unsigned

А вообще, таких желаний не должно возникать. Лучше расскажи, зачем тебе это.

unsigned ★★★★
()
Ответ на: комментарий от unsigned

а ТС хочет библиотеку.

просто больше шаманства :)

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.