Перенос программы с более новой мсвс(линукс) на более старую |
Здравствуйте, гость ( Вход | Регистрация )
Перенос программы с более новой мсвс(линукс) на более старую |
loh |
25.4.2012, 0:34
Сообщение
#21
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
целиком собрать весь тулкит и все библиотеки - это надо месяц мозг парить и воевать с настройками. проще собрать полностью цельный бинарник без внешних линков или с линками только на локальный каталог и попробовать запустить на целевой оси. это сработает, если кернелы на рабочей и целевой машине идентичны. целиком собрать весь тулкит и все библиотеки - это надо месяц мозг парить и воевать с настройками. проще собрать полностью цельный бинарник без внешних линков или с линками только на локальный каталог и попробовать запустить на целевой оси. это сработает, если кернелы на рабочей и целевой машине идентичны. отлично, как это сделать? в винде на vs я знаю как это сделать тупо прилепить длл в папку с прогой, и она хошь на хр хошь на 7, хошь на ce будет запускаться в линуксе для qt надо миллиард зависимостей каким то раком обойти, и самый геморой - как убрать из зависимостей stdlibc++, особенно если её нифига нет в статике ( Сообщение отредактировал loh - 25.4.2012, 0:36 |
|
|
Iron Bug |
25.4.2012, 6:53
Сообщение
#22
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
я не имею дел конкретно с Qt, но общелинюксовые настройки gcc таковы:
поиск библиотек при выполнении в какой-то папке -Wl,-rpath <путь>. Например, для поиска в локальной папке -Wl,-rpath. (точка важна). статическая линковка libstdc++: -static-libstdc++ статическая линковка libgcc: -static-libgcc Сообщение отредактировал Iron Bug - 25.4.2012, 6:55 |
|
|
loh |
25.4.2012, 9:51
Сообщение
#23
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
я не имею дел конкретно с Qt, но общелинюксовые настройки gcc таковы: поиск библиотек при выполнении в какой-то папке -Wl,-rpath <путь>. Например, для поиска в локальной папке -Wl,-rpath. (точка важна). статическая линковка libstdc++: -static-libstdc++ статическая линковка libgcc: -static-libgcc как раз этим и занят, на платформе для разработки gcc 4.1.3 стоит, -static-libstdc++ поддерживается начиная с 4.5, собрал 4.5 gcc обновилась, g++ почему то нет (-v по прежнем 4.1.3), сейчас устанавливаю 4.7, может поможет... не понял почему обновилась только gcc без g++ |
|
|
maint |
25.4.2012, 10:10
Сообщение
#24
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
|
|
|
loh |
25.4.2012, 12:11
Сообщение
#25
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
собрал 4.5 gcc обновилась, g++ почему то нет (-v по прежнем 4.1.3), сейчас устанавливаю 4.7, может поможет... не понял почему обновилась только gcc без g++ потому что gcc и gcc-c++, как и gcc-fortran разные вещи. а где взять source для сборки gcc-c++? |
|
|
maint |
25.4.2012, 12:42
Сообщение
#26
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
собрал 4.5 gcc обновилась, g++ почему то нет (-v по прежнем 4.1.3), сейчас устанавливаю 4.7, может поможет... не понял почему обновилась только gcc без g++ потому что gcc и gcc-c++, как и gcc-fortran разные вещи. а где взять source для сборки gcc-c++? srpm то один должен быть. Во время сборки указывается., если память не изменяет, в опциях сборки. Ну а если tarball то в опциях configure |
|
|
loh |
27.4.2012, 19:43
Сообщение
#27
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
я не имею дел конкретно с Qt, но общелинюксовые настройки gcc таковы: поиск библиотек при выполнении в какой-то папке -Wl,-rpath <путь>. Например, для поиска в локальной папке -Wl,-rpath. (точка важна). статическая линковка libstdc++: -static-libstdc++ статическая линковка libgcc: -static-libgcc это параметры куда писать? у меня выдает сообщение что g++ не знаком с параметрами -static-libstdc++ -static-libgcc как сделать чтобы все библиотеки брались только из -Wl,-rpath. , чтобы я их туда накидал и архивом с программой бросил на целевую машину? (а если их там нет, то даже на машине для разработки появлялась бы ошибка) народ, покажите хотя бы как примерно мейкфайл должен выглядеть чтобы она собирал программу так, что она переносилась на любу систему |
|
|
Iron Bug |
27.4.2012, 22:02
Сообщение
#28
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
как примерно мейкфайл должен выглядеть чтобы она собирал программу так, что она переносилась на любу систему это какой-то сильно сложный автоконфиг надо городить. если хочешь в этом разбираться, копай в сторону GNU autotools. там стопицот тонн документации на эту тему. насчёт параметров GCC - читать доки на сайте GCC. правда, я не помню, с какой версии компилятора стало можно линковать статически. к тому же, сам компилятор должен быть собран с возможностью статической линковки libgcc (это к тому, если ты сам его собирать будешь), стандартный собран со статикой, как правило. кроме того, есть ещё одно ограничение на статику: если ты будешь линковать libgcc статически, то у тебя не будут работать эксепшны между динамическими библиотеками и твоей софтиной. это специфика обработки исключений. так что при статически прилинкованной libgcc если внешний модуль Qt вдруг кинет исключение, то ты его просто не увидишь. вполне вероятно, что в таких условиях Qt не будет работать нормально. |
|
|
loh |
1.5.2012, 1:54
Сообщение
#29
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
получилось слинковать g++ статически, осталось обойти зависимость от glibc - как это можно сделать?
|
|
|
Iron Bug |
1.5.2012, 13:59
Сообщение
#30
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
уже десять раз написали, что -static-libgcc. но со всеми вытекающими отсюда сложностями, естественно. я вообще не знаю, можно ли с таким параметром собрать Qt. обычно это вызывает большие проблемы с взаимодействием динамических библиотек.
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 7:12 |