проблема компилирования исходников

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар

Сообщение Кислый »

хз если ошибся темой. давно не был (

в общем есть некий socket engine с первого взгляда очень даже ничего. однако код отказывается заводится (
с автором ведется активная переписка, и он просит собрать статистику.
netLink-v1.0.0-pre-3.tar.gz
(104.61 КБ) 400 скачиваний
собственно сам сокетный движек, примеры и хелп.

просьба попробовать скомпилить. в ответе требуется указать чем компилили (компилятор), где (IDE) и приходилось ли шаманить.
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

В каталог examples/smart_buffer положил стандартные свои make-файлы
smart_buffer-makefiles.7z
(1.16 КБ) 168 скачиваний
Makefile подредактировал сообразно ситуации.

Ubuntu/32 10.04, gcc 4.4.3
Собралось сразу, только кучка предупреждений «dereferencing pointer XXX does break strict-aliasing rules»
Результат webget размером 26.5 килобайта, запуск

Код: Выделить всё

./webget http://real.kiev.ua >webg.htm
создал такой файл
webg.htm.7z
(13.03 КБ) 170 скачиваний
Windows XP
Старый gcc 3.4.2 ругается на отсутствие _snprintf в пространстве std
gcc 4.7.1 ругается на конфликт объявлений _snprintf с "C++" и с "C" linkage в разных строках stdio.h
Лень копаться дальше.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар

Сообщение Кислый »

спс
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

Отремонтировал.
Собирается теперь и в WindowsXP.

Источник проблем -- строка

Код: Выделить всё

#define snprintf _snprintf
в файле include/netlink/core.h в ветке

Код: Выделить всё

#if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER)
(вот потому в линуксе и всё нормально было).

Точнее, не она сама, а тот факт, что данная строка оказывалась до системных include-файлов и ломала stdio.h
В самом core.h ниже включался string, который по цепочке доставал до stdio.h и там заменял имя С++ - ному snprintf на _snprintf, в результате чего и возникал конфликт.
В webGet.cc файл string тоже включался после include/netlink/socket.h, который включает core.h и т.д.

Короче -- никогда не включайте ничего своего перед системными include-файлами.
Ну, кроме маленького h-файла с настройками для системного h-ника, как, например, файл с предусмотренными #define-ами для отключения ненужного в windows.h для ускорения компиляции.

Потом в Makefile для win ещё добавил

Код: Выделить всё

ADD_LIBRARIES := -Wl,-lwsock32 -Wl,-lws2_32
а то оно не находило нужные вещи.

Ну и отремонтированный архив.
netLink-patched.7z
(113.29 КБ) 140 скачиваний
Cобирать в линуксе просто make, в win командой make WIN=1

p.s. Работоспособность виндового exe не проверял, так как XP у меня живёт в VirtualBOX-е и выхода в интернет не имеет. Сетка ей расшарена, но не та подсеть, где роутер :-), до моей платы достучаться может и ладно.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

Ой, в Makefile там немного ошибся, он рабочий вышел, но в линуксе не минимального размера бинарник выходил.
Надо так:
Вложения
Makefile.7z
(468 байт) 149 скачиваний
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар

Сообщение Кислый »

хмм.. странно как-то у мення Code::Blocks продолжает ругаться.. причем иногда хочется у него спросить "WTF ??"

вот примерно в таком моменте :

Изображение

/home/me/workspace/test_2/netlink/socket.h|39|error: expected constructor, destructor, or type conversion before ‘class’|
/home/me/workspace/test_2/netlink/socket.inline.h|34|error: ‘Socket’ has not been declared|
Вложения
Снимок.png
(7.11 КБ) 470 скачиваний
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

Я ничего не понял - вы в чем собираете ? Если в винде, то странный путь к исходнику, если в линуксе, то какие там на фик классы ???
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

Кислый писал(а):хмм.. странно как-то у мення Code::Blocks продолжает ругаться..
Ну Code::Blocks только среда, ругается компилятор. А у меня под Code::Blocks бегают avr-gcc, arm-gcc, mingw32-gcc и линуксовый :-)

Ошибка совершенно дурная, такое ощущение, что парсер сбился гораздо раньше, а тут ему просто это под руку подвернулось для повода выругаться.
У меня всеми это место компилировалось, старым mingw32-gcc 3.4.2 не собиралось, так как у него библиотек не хватало.
urry писал(а):если в линуксе, то какие там на фик классы ???
А что не так в линуксе?
Посмотрите второе сообщение темы — как раз в линуксе обсуждаемые исходники собрались сразу, без каких-либо проблем. Включая упомянутый class Socket.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар

Сообщение Кислый »

C::B то только среда.. но ведь она конфигурирует компилятор при отсутстви make файла
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

ну не знаю, что-то чересчур универсальная библиотека получилась, я бы не стал ее пользовать. Использовал бы "штатные" средства. И, кстати, тот же сокет на каком -нибудь перле - это несколько строчек.
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна

Сообщение avreal »

Кислый писал(а):C::B то только среда.. но ведь она конфигурирует компилятор при отсутстви make файла
Ну вот что да, то да, для работы makefile у меня все самописные.
У меня промелькнула было мысль, что он как-то для файлов с расширением .cc не вставил компиляцию в С++ режиме, но тогда в сообщении об ошибке не было бы слов конструктор/деструктор.
Если хотите — сбросьте мне на real at real.kiev.ua архив глюкающего проекта и условаия (ОС, версия компиоятора). Попробю в выходные глянуть.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Контактная информация:
Ответить

Вернуться в «Интеграция с ПК»