Использование Makefile: почему растет размер библиотеки?

Тема в разделе "WASM.ZEN", создана пользователем device, 8 фев 2008.

  1. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Есть Makefile.am такого содержания:
    Код (Text):
    1. # set the include path for X, qt and KDE
    2. INCLUDES = $(all_includes)
    3.  
    4. # these are the headers for your project
    5. noinst_HEADERS = webkernel_so.h
    6.  
    7. # let automoc handle all of the meta source files (moc)
    8. METASOURCES = AUTO
    9.  
    10. messages: rc.cpp
    11.     $(EXTRACTRC) `find . -name \*.ui -o -name \*.rc` > rc.cpp
    12.     $(XGETTEXT) *.cpp -o $(podir)/webkernel_so.pot
    13.  
    14. KDE_ICON = AUTO
    15.  
    16. #########################################################################
    17. # APPLICATION SECTION
    18. #########################################################################
    19. # this is the program that gets installed.  it's name is used for all
    20. # of the other Makefile.am variables
    21. bin_PROGRAMS = libwebkernel_so.so
    22.  
    23.  
    24. # the application source, library search path, and link libraries
    25. libwebkernel_so_so_SOURCES = main.cpp webkernel_so.cpp
    26. libwebkernel_so_so_LDFLAGS = -shared $(KDE_RPATH) $(all_libraries)
    27. libwebkernel_so_so_LDADD = $(LIB_KDEUI)
    28.  
    29. # this is where the desktop file will go
    30. shelldesktopdir   = $(kde_appsdir)/Utilities
    31. shelldesktop_DATA = webkernel_so.desktop
    32.  
    33. # this is where the shell's XML-GUI resource file goes
    34. shellrcdir   = $(kde_datadir)/webkernel_so
    35. shellrc_DATA = webkernel_soui.rc
    36.  
    37. kde_services_DATA = webconfig.desktop
    38. UserInterface_SOURCES_ = $(libUserInterface_a_SOURCES)
    39. UserInterface_BIN = UserInterface.jar
    40.  
    41. libUserInterface.a:
    42.     cd $(srcdir) && @JAVAC@ -d $(srcdir)/UserInterface.o -cp .: $(libUserInterface_a_SOURCES)
    43.     cd $(srcdir)/UserInterface.o && @JAR@ cf $(srcdir)/$(UserInterface_BIN) .
    44. lib_LIBRARIES = libUserInterface.a
    45. libUserInterface_a_SOURCES = UILauncher.java AuthDialog.java
    Так вот: на выходе - 2 файла: libwebkernel_so.so и UserInterface.jar, однако, чем больше объем UserInterface, тем больше размер libwebkernel_so.so на выходе. Почему так? Что самое интересное, у библиотеки меняется только размер, а сама либа нормально работает. Что дописывается в разделяемую библиотеку?
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    device
    Может ресурсы много занимают ?
     
  3. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    valterg
    одна иконка 8 кб
     
  4. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    device
    посмотри, что там меняется:
    objdump -h libwebkernel_so.so
     
  5. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Код (Text):
    1. objdump: /usr/lib/libwebkernel_so.so: File format not recognized
    Перекомпилил -- debug

    Дизассемблировал.
    Вот что получается:
    Начиная с адреса 000042d4 по адрес 0000455c
    заполнено ЭТИМ:
    mov $0, %eax
    mov $0, %ebx
    Э та муть продолжается до конца..
    Где-то изредка встречается такое (раза 4 встретил):
    movl $0xffffffff,0xffffffd4(%ebp)

    Я так понял этот код вообще ниче не делает, тогда нафиг он нужен?