powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / gtkmm + eclipse
18 сообщений из 18, страница 1 из 1
gtkmm + eclipse
    #38354604
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь сделать helloworld спомощью сабж. Пример взял с вики, установил в kepler pkg-config-support , понаставил галочек, жму кнопку и получаю:
ересь23:36:01 **** Incremental Build of configuration Debug for project test-cpp ****
Info: Internal Builder is used for build
g++ -I/usr/include/atkmm-1.6 -I/usr/include/atk-1.0 -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairomm-1.0 -I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/gdkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -I/usr/include/giomm-2.4 -I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/gtk-3.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/harfbuzz -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include -I/usr/include/gtk-3.0/unix-print -O0 -g3 -Wall -c -fmessage-length=0 -pthread -o main.o ../main.cpp
g++ -shared -o libtest-cpp main.o -latkmm-1.6 -latk-1.0 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0 -lcairo -lcairomm-1.0 -lfreetype -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lgdk-3 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lgtkmm-3.0 -lharfbuzz -lpixman-1 -latkmm-1.6 -latk-1.0 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0 -lcairo -lcairomm-1.0 -lfreetype -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lgtk-3 -lgdk-3 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lgtkmm-3.0 -lpixman-1 -lGL -lQt5Bootstrap -lQt5Concurrent -lQt5Core -lQt5DBus -lQt5Gui -lQt5Network -lQt5OpenGL -lQt5Widgets -lQt5PlatformSupport -lQt5PrintSupport -lQt5Qml -lQt5QmlDevTools -lQt5Quick -lQt5QuickParticles -lQt5QuickTest -lQt5Sql -lQt5Test -lQt5Xml -latk-bridge-2.0 -lfontconfig -lz -lpng12 -lxcb-render -lxcb -lxcb-shm -lX11 -lXext -lXrender -lexpat -lform -lncurses -ltinfo -lgdk_pixbuf_xlib-2.0 -lgmodule-2.0 -lGLU -lgthread-2.0 -lharfbuzz -lICE -lcrypto -ldrm -ldrm_intel -ldrm_nouveau -ldrm_radeon -lexslt -lxslt -lxml2 -lffi -lkms -lpcre -lpcrecpp -lpcreposix -lssl -lvlc -lmenu -lncurses++ -lpanel -lpangoft2-1.0 -lpangox-1.0 -lpangoxft-1.0 -lXft -lSM -lsqlite3 -ltic -lwayland-client -lwayland-cursor -lwayland-server -lX11-xcb -lXau -lxcb-dri2 -lxcb-glx -lXcomposite -lXcursor -lXdamage -lXfixes -lXdmcp -lXi -lXinerama -lxkbcommon -lXrandr -lXxf86vm -lyaml
/usr/bin/ld: main.o: перемещение R_X86_64_32 для «.rodata» не может использоваться при создании общего объекта; перекомпилируйте с -fPIC
main.o: could not read symbols: Некорректное значение
collect2: ошибка: выполнение ld завершилось с кодом возврата 1


ЧЯДНТ?
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354638
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот когда ты перестанешь считать процитировнное ересью и начнешь пытаться это понять - ты сразу же догадаешься что надо сделать.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354672
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Я не понимаю, что такое R_X86_64_32, «.rodata» и где прописать -fPIC.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354872
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devider,

а что такое "перекомпилируйте с -fPIC", понимаешь?
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354873
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeviderWhite Owl,

Я не понимаю, что такое R_X86_64_32, «.rodata» и где прописать -fPIC.

.rodata -- (как я понимаю, это только догадка) сегмент данных READ ONLY (приложения).
R_X86_64_32 -- это какой-то объектник или библиотека.

И главное -- это всё не важно, у тебя есть чёткая инструкция.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354901
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Илья, а слабо вместо сарказма дать простой и доступный ответ? Какая инструкция? Какое значение считается некорректным?
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354947
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeviderИлья, а слабо вместо сарказма дать простой и доступный ответ? Какая инструкция? Какое значение считается некорректным?

Сарказма и не было.

Тебе надо добавить при компиляции твоего приложения флаг компилятору -fPIC.
Перекомпилировать приложение и заново собрать.

Важно, что надо перекомпилировать.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354989
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что это за ключики, если надо.

GCC-fpic
Generate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine. Such code accesses all constant addresses through a global offset table (GOT). The dynamic loader resolves the GOT entries when the program starts (the dynamic loader is not part of GCC; it is part of the operating system). If the GOT size for the linked executable exceeds a machine-specific maximum size, you get an error message from the linker indicating that -fpic does not work; in that case, recompile with -fPIC instead. (These maximums are 8k on the SPARC and 32k on the m68k and RS/6000. The 386 has no such limit.)

Position-independent code requires special support, and therefore works only on certain machines. For the 386, GCC supports PIC for System V but not for the Sun 386i. Code generated for the IBM RS/6000 is always position-independent.

When this flag is set, the macros __pic__ and __PIC__ are defined to 1.
-fPIC
If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding any limit on the size of the global offset table. This option makes a difference on the m68k, PowerPC and SPARC.

Position-independent code requires special support, and therefore works only on certain machines.

When this flag is set, the macros __pic__ and __PIC__ are defined to 2.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38354992
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще странно, что -fPIC не проставлен автоматом - это ведь обязательное требование для динамических библиотек под 64-битным Линуксом.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355005
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так может он и собирает с 32-битными библиотеками, напр.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355011
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и я подумал -- для начала лучше наверное прочитать README и сделать всё БЕЗ Eclipse.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355088
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без эклипса все собиралось:
Код: plaintext
g++ main.cpp -o main `pkg-config gtkmm-3.0 --cflags --libs`
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355114
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devider,

Код: plaintext
1.
g++ -shared -o libtest-cpp main.o ...

Ты не пытаешься ли случайно собирать библиотеку вместо приложения ?
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355225
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.
Скажем так: я не пытаюсь, а вот что за эклипс не ручаюсь...
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355304
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devider,

попробуй убрать -shared.


Код: plaintext
1.
2.
3.
4.
-shared
           Produce a shared object which can then be linked with other objects to form an executable.  Not all systems support this option.  For predictable results, you must also specify the same set of
           options that were used to generate code (-fpic, -fPIC, or model suboptions) when you specify this option.[1]

...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355793
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, создал новый проект, все завелось с первой попытки.
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38355848
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается это было виновато:
Deviderпонаставил галочек
:)
...
Рейтинг: 0 / 0
gtkmm + eclipse
    #38356048
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

Не, я эти галочки имел ввиду. Ну суть да, видимо, что-то нашаманил.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / gtkmm + eclipse
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]