LINUX.ORG.RU

Линковка приложения


0

0

Допусти есть такая статическая библиотека:

файл: myheader.h

// Есть одна функция которая использует внутри вызовы zlib void createArchieve( const char *file, void *data, uint size );

// Есть еще одна функция которая печатает дурацкое сообщение. void test() { printf( "Hi there.\n" ); }

Теперь вопрос почему когда я создаю программу использующую эту библиотеку а точнее всего то навсего только функцию test мне приходиться линковать Z-lib. Как сделать так чтобы этого не нужно было делать (избавиться от линковки кода из библиотек который не используется и как следствие самой zlib библиотеки).

#include "myheader.h"

int main(){ test(); return 0; }

anonymous

(sorry не выбрал стиль)
Допусти есть такая статическая библиотека:

файл: myheader.h

// Есть одна функция которая использует внутри вызовы zlib
void createArchieve( const char *file, void *data, uint size );

// Есть еще одна функция которая печатает дурацкое сообщение. void test() { printf( "Hi there.\n" ); }

Теперь вопрос почему когда я создаю программу использующую эту библиотеку а точнее всего то навсего только функцию test мне приходиться линковать Z-lib. Как сделать так чтобы этого не нужно было делать (избавиться от линковки кода из библиотек который не используется и как следствие самой zlib библиотеки).

#include "myheader.h"

int main(){
test();
return 0;
}

anonymous
()

попробовал не помогло все равно unresolved.
использовал следующим образом
g++ -c main.cpp
g++ -o main -Wl,--as-needed -O2 -pipe -Wall main.o -L. -lmy
undefined reference to `compress'
undefined reference to `uncompress'

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

не заметил, что либа статическая. --as-needed сработает только в том случае, если либа - so

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