Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Таблица экспорта библиотеки  (Прочитано 17394 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 07-12-2009 11:07 » 

Код:
echo deps Simple.cpp
deps Simple.cpp
grc -e  i586-mingw32msvc-g++   -O2 -Wall -Wextra --pedantic   `pkg-config --cflags ` -M -MP -MQ Simple.d -MQ Simple.o -o Simple.d Simple.cpp
Must specify package names on the command line
echo g++ Simple.cpp
g++ Simple.cpp
grc -e  i586-mingw32msvc-g++   -O2 -Wall -Wextra --pedantic   `pkg-config --cflags ` -c -o Simple.o Simple.cpp
Must specify package names on the command line
Simple.cpp:72: warning: unused parameter ‘state’
Simple.cpp:72: warning: unused parameter ‘x’
Simple.cpp:72: warning: unused parameter ‘y’
Simple.cpp:94: warning: unused parameter ‘x’
Simple.cpp:94: warning: unused parameter ‘y’
echo linking test
linking test
i586-mingw32msvc-ld -lglut  `pkg-config --libs ` -o test.exe Simple.o
Must specify package names on the command line
Simple.o:Simple.cpp:(.text+0xf): undefined reference to `_glLoadIdentity@0'
Simple.o:Simple.cpp:(.text+0x42): undefined reference to `_gluLookAt@72'
Simple.o:Simple.cpp:(.text+0x4d): undefined reference to `_glClear@4'
Simple.o:Simple.cpp:(.text+0x54): undefined reference to `_glBegin@4'
Simple.o:Simple.cpp:(.text+0x62): undefined reference to `_glColor3f@12'
Simple.o:Simple.cpp:(.text+0x6e): undefined reference to `_glVertex3f@12'
Simple.o:Simple.cpp:(.text+0x7a): undefined reference to `_glColor3f@12'
Simple.o:Simple.cpp:(.text+0x8a): undefined reference to `_glVertex3f@12'
Simple.o:Simple.cpp:(.text+0x96): undefined reference to `_glColor3f@12'
Simple.o:Simple.cpp:(.text+0xa2): undefined reference to `_glVertex3f@12'
Simple.o:Simple.cpp:(.text+0xa8): undefined reference to `_glEnd@0'


Чем можно посмотреть содержимое таблицы экспорта libfreeglut.a (правильные названия функций)  под Линуксом?

P.S. возникают подозрения, что я как-то неправильно подсунул компилятору хидер glut.h
« Последнее редактирование: 07-12-2009 11:13 от Sel » Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #1 : 08-12-2009 07:51 » 

gramar nazi Улыбаюсь я уже поставил англо-русский словарь теперь spelling ошибок должно быть намного меньше, хе будем работать над этими, не знаю как называется: ( запятыми дефисами )

в общем, по теме:

символы просматриваются nm, но тк по данным objdump -i, формат pe-i386 не поддерживается nm установленным по умолчанию, то пришлось использовать для просмотра libfreeglut.a /usr/i586-mingw32msvc/bin/nm

подозрения относительно glut.h не оправдались
Записан

1n c0de we trust
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 08-12-2009 10:07 » 

Mayor, это называется пунктуация.

*.a - это "архивная библиотека", коллекция объектных файлов (не разделяемая библиотека!). Логично, что под Linux-i386 они имеют формат ELF 32bit.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист

ru
Offline Offline

« Ответ #3 : 08-12-2009 10:22 » 

Ну, по всей видимости, libfreeglut. А это коллекция ссылок на функции разделяемых библиотек или dll, но тем не менее архив остается архивом, и, в отличие от линковки с разделяемыми библиотеками, порядок следования в командной строке ld архивов и объектных файлов имеет значение ... Как ни странно, все ее объектные файлы хранятся в формате pe-i386 - по одному объекту на апи фукнцию.

По идее, нужно будет что-нибудь почитать по кросскомпиляции, когда завершу 1й этап с++, или даже параллельно с 1м этапом.
« Последнее редактирование: 08-12-2009 16:33 от Sel » Записан

1n c0de we trust
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 08-12-2009 11:10 » 

Mayor, а не под MinGW ли ты увидел PE?..
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sel
Злобный
Администратор

ru
Offline Offline

« Ответ #5 : 08-12-2009 16:34 » 

Mayor, не научишься писать по-русски грамотно, начну удалять твои посты. Править надоело.
Записан

Слово не воробей. Всё не воробей, кроме воробья.
Mayor
Специалист

ru
Offline Offline

« Ответ #6 : 10-12-2009 08:27 » 

Mayor, а не под MinGW ли ты увидел PE?..

да под ним, в смысле в папке библиотек migGw, установленного на debian
« Последнее редактирование: 10-12-2009 08:36 от Mayor » Записан

1n c0de we trust
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 10-12-2009 19:04 » new

Тогда ничего странного в этом нет: в винде принят формат PE.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 15-12-2009 06:11 » 

Код:
`pkg-config --libs `

это что такое? насколько я помню после --libs должно быть имя библиотеки
Записан

Странно всё это....
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 15-12-2009 06:22 » 

LogRus, именно!

Код:
#pkg-config --libs openssl
-L/usr/kerberos/lib -lssl -lcrypto -ldl -lz
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #10 : 15-12-2009 06:28 » 

и поставь -lglut после -o test.exe Simple.o

проблема осталась?
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines