Размер библиотеки / исполняемого файла велик в LINUX - PullRequest
0 голосов
/ 19 мая 2011

У нас есть 32-битное приложение Gui, созданное с использованием C ++. Мы перенесли приложение из Solaris в Linux. Проблема, с которой мы сталкиваемся -

Размер библиотеки и исполняемого файла в LINUX очень велик по сравнению с Solaris.

Red Hat Enterprise Linux 5.4 - это версия Linux, которую мы используем.

Пожалуйста, найдите образец динамической библиотеки, созданной. Мы хотели бы знать, что следующее поведение LINUX является нормальным или нет.

Предположим, что мы создали два файла test1.cc и test2.cc. Оба имеют одну строку кода.

a-2720@N530 /data1/users/a-2720/samp :ls  -lrt test1.cc test2.cc

-rw-rw-r--   1 a-2720   mcs           21 May 18 06:16 test1.cc

-rw-rw-r--   1 a-2720   mcs           21 May 18 06:16 test2.cc


a-2720@N530 /data1/users/a-2720/samp :cat test1.cc

    #include<iostream.h>


a-2720@N530 /data1/users/a-2720/samp :cat test2.cc

    #include<iostream.h>

Таким образом, файлы содержат только одну строку

Я создал общую библиотеку, используя эти файлы.

SOLARIS

CC -c  -library=iostream  -g -mt test1.cc

CC -c  -library=iostream  -g -mt test2.cc

CC -G -h libtestsolaris.so test1.o test2.o -o libtestsolaris.so -library=iostream 

a-2720@N530 /data1/users/a-2720/samp :ls  -lrt test1.o test2.o libtestsolaris.so

-rw-rw-r--   1 a-2720   mcs        20944 May 18 06:16 test1.o

-rw-rw-r--   1 a-2720   mcs        20944 May 18 06:16 test2.o

-rwxrwxr-x   1 a-2720   mcs         7384 May 18 06:16 libtestsolaris.so

LINUX

CC -m32 -c  -library=iostream  -g -mt test1.cc

CC -m32 -c  -library=iostream  -g -mt test2.cc

CC -m32 -G -h libtestlinux.so test1.o test2.o -o libtestlinux.so -library=iostream 

/data1/users/adarsh/samp :ls  -lrt test1.o test2.o libtestlinux.so

-rw-r--r-- 1 adarsh ifo 20220 May 18 06:44 test1.o

-rw-r--r-- 1 adarsh ifo 20220 May 18 06:44 test2.o

-rwxr-xr-x 1 adarsh ifo 41680 May 18 06:44 libtestlinux.so

Здесь мы видим, что разделяемая библиотека Linux в разы больше, чем в Solaris. Обратите внимание, что исходный файл

для этих библиотек одинаковы. Наше приложение использует тысячи файлов, имеющих эти заголовочные файлы, и, следовательно, происходит заметная разница в размере.

Мы хотели бы знать, что эта разница в размере является нормальным поведением LINUX.

Сведения о системе

/data1/users/adarsh/samp :cat /etc/*-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)

/data1/users/adarsh/samp :uname -a
Linux N280 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

Ответы [ 3 ]

6 голосов
/ 19 мая 2011
Опция

-g добавит информацию об отладке в исполняемый файл, что увеличит его размер.Также включите опции , которые управляют различными оптимизациями .

0 голосов
/ 19 мая 2011
  1. не строить с отладочными символами (опция -g для gcc)
  2. убрать символы из библиотеки

После выполнения шагов 1 и 2, выполнить сравнение.

0 голосов
/ 19 мая 2011

вы можете поиграть с nm, чтобы увидеть, какой код находится в библиотеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...