crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

5 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
loh
  опции профиля:
сообщение 18.4.2012, 11:50
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Значит такое дело:

Есть программа, писал в винде на qt4, надо перенести на линукс (мсвс) где этого qt4 нет. На эту мсвс ничего устанавливать нельзя.

Есть более новый мсвс (на том же ядре), с нужной версией, туда перенести удалось. Также удалось статически слинковать qt, но теперь при переносе на ранюю версию возникают ошибки по другим библиотекам динамическим — libstdc, libgcc и прочие зависимости.

Вопрос: как собрать программу со статической линковкой всех библиотек, а не только qt, или есть ли вариант как в винде просто перетащить все динамические библиотеки в папку с программой и сказать что бы линковалась из папки?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 18.4.2012, 12:25
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 18.4.2012, 12:49
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(maint @ 18.4.2012, 13:25) *
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо

Вот я и спрашиваю как статически слинковать другие библиотеки) какие опции там

Цитата(maint @ 18.4.2012, 13:25) *
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо

ну всмысле какие флаги там в qmake прописать, или в мейке может что
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 18.4.2012, 13:20
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(loh @ 18.4.2012, 18:49) *
Цитата(maint @ 18.4.2012, 13:25) *
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо

Вот я и спрашиваю как статически слинковать другие библиотеки) какие опции там

Цитата(maint @ 18.4.2012, 13:25) *
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо

ну всмысле какие флаги там в qmake прописать, или в мейке может что

ну man gcc говорит -static на линковке должно быть (LFLAGS в Makefile). Если статические библиотеки есть, подхватятся. В qmake, кажется, -config static
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 18.4.2012, 13:37
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(maint @ 18.4.2012, 14:20) *
Цитата(loh @ 18.4.2012, 18:49) *
Цитата(maint @ 18.4.2012, 13:25) *
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо

Вот я и спрашиваю как статически слинковать другие библиотеки) какие опции там

Цитата(maint @ 18.4.2012, 13:25) *
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо

ну всмысле какие флаги там в qmake прописать, или в мейке может что

ну man gcc говорит -static на линковке должно быть (LFLAGS в Makefile). Если статические библиотеки есть, подхватятся. В qmake, кажется, -config static
Как вариант эта ось совместима с redhat 6.2 — на нём можно такую штуку проделать со статической линковкой? Вообще на каком нибудь ред хат с ядром 2.4.. И какие там qt версии стоят? :о


когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 18.4.2012, 15:02
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(loh @ 18.4.2012, 19:37) *
Как вариант эта ось совместима с redhat 6.2 — на нём можно такую штуку проделать со статической линковкой? Вообще на каком нибудь ред хат с ядром 2.4.. И какие там qt версии стоят? :о

когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет..

редхат 6.2 я уже не помню когда и ставил. И чего там, хоть умри не припомню. Искать тогда где то в инете статические библиотеки или знакомых. Другого путя не вижу. Можно с родного дистра посмотреть. Наверняка же какой то ftp у них болтается. Ошибку какую выдает ? cannon find -lQtCore или -lc ? Тогда просто не нашел статическую библиотеку. Я вообще делаю так qmake -config release. Потом в LFLAGS добавляю -static, если ваш вариант сборки. Обычно прокатывает. Но системы посвежее обычно

Сообщение отредактировал maint - 18.4.2012, 15:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 18.4.2012, 15:37
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(maint @ 18.4.2012, 15:02) *
Цитата(loh @ 18.4.2012, 19:37) *
Как вариант эта ось совместима с redhat 6.2 — на нём можно такую штуку проделать со статической линковкой? Вообще на каком нибудь ред хат с ядром 2.4.. И какие там qt версии стоят? :о

когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет..

редхат 6.2 я уже не помню когда и ставил. И чего там, хоть умри не припомню. Искать тогда где то в инете статические библиотеки или знакомых. Другого путя не вижу. Можно с родного дистра посмотреть. Наверняка же какой то ftp у них болтается. Ошибку какую выдает ? cannon find -lQtCore или -lc ? Тогда просто не нашел статическую библиотеку. Я вообще делаю так qmake -config release. Потом в LFLAGS добавляю -static, если ваш вариант сборки. Обычно прокатывает. Но системы посвежее обычно

Не может найти -lSm

Выполнение ld завершилось с кодом возврата 1

Я в параметрах qmake прописал QMAKE_LFLAGS=-static

Вообще есть ещё более новая версия мсвс, на ядре 2.6, линукс способен переносить с ядра на другое ядро или лучше не пробовать?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 18.4.2012, 16:17
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(loh @ 18.4.2012, 21:37) *
Цитата(maint @ 18.4.2012, 15:02) *
Цитата(loh @ 18.4.2012, 19:37) *
Как вариант эта ось совместима с redhat 6.2 — на нём можно такую штуку проделать со статической линковкой? Вообще на каком нибудь ред хат с ядром 2.4.. И какие там qt версии стоят? :о

когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет..

редхат 6.2 я уже не помню когда и ставил. И чего там, хоть умри не припомню. Искать тогда где то в инете статические библиотеки или знакомых. Другого путя не вижу. Можно с родного дистра посмотреть. Наверняка же какой то ftp у них болтается. Ошибку какую выдает ? cannon find -lQtCore или -lc ? Тогда просто не нашел статическую библиотеку. Я вообще делаю так qmake -config release. Потом в LFLAGS добавляю -static, если ваш вариант сборки. Обычно прокатывает. Но системы посвежее обычно

Не может найти -lSm

Выполнение ld завершилось с кодом возврата 1

Я в параметрах qmake прописал QMAKE_LFLAGS=-static

Вообще есть ещё более новая версия мсвс, на ядре 2.6, линукс способен переносить с ядра на другое ядро или лучше не пробовать?)

если в статике, пофигу вроде. Я одну софтину с 2.4 несу уже 3, пашет. Но она без гуя. -lSm X- session manager похоже. Хотя не уверен. Трудно что то сказать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 18.4.2012, 16:40
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


А сколько в статике будет весить например просто qmainwindow пустой?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 18.4.2012, 18:30
Сообщение #10


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


можно же не линковать библиотеки статически, а тупо сложить их в ту же папку и указать -Wl,-rpath.. правда, их в Qt может оказаться дофига.
правда, наверное, тут и саму Qt с таким же флагом собирать придётся, иначе библиотеки друг друга могут не найти.

Сообщение отредактировал Iron Bug - 18.4.2012, 18:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 19.4.2012, 15:29
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да с qt то проблемы отпали..

А где взять нормальный образ ред хат 6.2 или какой нибудь другой, что бы в нём можно было собирать всё статически?..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 19.4.2012, 16:59
Сообщение #12


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


Цитата(loh @ 18.4.2012, 12:50) *
Вопрос: как собрать программу со статической линковкой всех библиотек, а не только qt, или есть ли вариант как в винде просто перетащить все динамические библиотеки в папку с программой и сказать что бы линковалась из папки?


Мы поступали примерно так.

Собирали Qt необходимой версии на целевой платформе из исходников.
Если для Qt нельзя сделать make install (корректно установить Qt), то просто копировали все динамические библиотеки Qt в папку с программой.

Чтобы программа запускалась с локальными либами, необходимо задать значение для переменной окружения.
Обычно прописывали внутри .bash_profile

export LD_LIBRARY_PATH=./


Все запускалось и работало.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 19.4.2012, 17:10
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Так с локальными же не запустится :о ? Надо все динамические библиотеки скопировать с системы где собрана программа?

Так с локальными же не запустится :о ? Надо все динамические библиотеки скопировать с системы где собрана программа?

Так с локальными же не запустится :о ? Надо все динамические библиотеки скопировать с системы где собрана программа?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 19.4.2012, 22:22
Сообщение #14





Гости








    


Собери Qt на той версии MCBC на которой нужно развернуть, сделай ей install в кастомную дирректорию, собери rpm(не обязательно, но так будет удобней), разверни rmp на девелоперской машине, если потребуется установи на девелоперской машине пакеты gcc из дистрибутива интересующей тебя версии(те с которыми компилилась Qt), и собирай билд для более старой версии с этим тул сетом, кстати QtCreator можно настраивать так что бы он собирал сразу несколько билдов разными тулсетами.
Проверялось при разработке на MCBC 3,x и 4.RC2(или 2.х и 3.RC2 точно не помню)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 19.4.2012, 23:35
Сообщение #15


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


с самого начала пробовал, но чето не захотел qt там собираться, надо ещё попробовать...

короче что нибудь из предложенного попробую всем спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 21.4.2012, 12:03
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ssoft @ 19.4.2012, 17:59) *
Цитата(loh @ 18.4.2012, 12:50) *
Вопрос: как собрать программу со статической линковкой всех библиотек, а не только qt, или есть ли вариант как в винде просто перетащить все динамические библиотеки в папку с программой и сказать что бы линковалась из папки?


Мы поступали примерно так.

Собирали Qt необходимой версии на целевой платформе из исходников.
Если для Qt нельзя сделать make install (корректно установить Qt), то просто копировали все динамические библиотеки Qt в папку с программой.

Чтобы программа запускалась с локальными либами, необходимо задать значение для переменной окружения.
Обычно прописывали внутри .bash_profile

export LD_LIBRARY_PATH=./


Все запускалось и работало.

на целевой платформе gcc 2.95 и qt не ставится =\
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 21.4.2012, 16:19
Сообщение #17





Гости








    


В мсвс свои версии большинства продуктов, посмотри вывод gcc --version, кстати в поставке обычно идет 2 комплекта
gcc разных версий, один из которых по умолчанию не присутствует на путях вообще, где лежит к сожалению не помню либы лежат вроде в (/usr/local/версия gcc/lib).
Qt до 4.7.x включительно я собственно-ручно собирал на всех версиях мсвс которые мне попадались в руки, собираются они не всегда гладко, но собираются. Есть кстати один маленький трюк который по неведомым для меня причинам обычно позволяет повысить "собираемость" Qt: в spec файле используемым для сборки под Linux заменить g++ на gcc(кстати если потом с таким же изменением собирать проекты, то неожиданно под мсвс начинают корректно работать исключения). Обычно для сборки Qt на мсвс оказывается достаточно небольших изменений в spec файле и правильной настройки путей, на более новый gcc, хотя как мне кажется, если поковыряться то можно и со старой версией gcc собрать.
Если ты не ограничен сертифицированными продуктами, то можешь просто собрать новую версию gcc с которой Qt соберется вообще без проблем. И распостранять бинарики этого gcc и Qt собранной им в виде rpm.
Если мсвс приобретенна легально, так же можно обратится в вниинс, они как бэ обязуются предоставлять поддержку, правда ребята они долгие.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 21.4.2012, 21:08
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


да вроде поставил gcc поновее все равно ошибку выдает, бесит линукс :(

вот gcc -v был 2.95, ща 3.3 все равно не собирается, может gcc криво собрал..

сейчас хочу поставить федору 12, на ней собрать статически и перекинуть на исходную мсвс, это получится?

короче надо на голую мсвс3 r12 поставить программу написанную на qt>4.5 а как и где собрать её - без разницы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 24.4.2012, 0:01
Сообщение #19


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


а есть вообще какой нибудь дистрибутив линукс со всеми библиотеками в статике?

Цитата(Гость @ 19.4.2012, 23:22) *
Собери Qt на той версии MCBC на которой нужно развернуть
даже congigure не идет, нужен libstdc++.so.6, а там только 3
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 24.4.2012, 12:37
Сообщение #20


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


целиком собрать весь тулкит и все библиотеки - это надо месяц мозг парить и воевать с настройками.
проще собрать полностью цельный бинарник без внешних линков или с линками только на локальный каталог и попробовать запустить на целевой оси. это сработает, если кернелы на рабочей и целевой машине идентичны.

целиком собрать весь тулкит и все библиотеки - это надо месяц мозг парить и воевать с настройками.
проще собрать полностью цельный бинарник без внешних линков или с линками только на локальный каталог и попробовать запустить на целевой оси. это сработает, если кернелы на рабочей и целевой машине идентичны.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 25.4.2012, 0:34
Сообщение #21


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Iron Bug @ 24.4.2012, 12:37) *
целиком собрать весь тулкит и все библиотеки - это надо месяц мозг парить и воевать с настройками.
проще собрать полностью цельный бинарник без внешних линков или с линками только на локальный каталог и попробовать запустить на целевой оси. это сработает, если кернелы на рабочей и целевой машине идентичны.

целиком собрать весь тулкит и все библиотеки - это надо месяц мозг парить и воевать с настройками.
проще собрать полностью цельный бинарник без внешних линков или с линками только на локальный каталог и попробовать запустить на целевой оси. это сработает, если кернелы на рабочей и целевой машине идентичны.

отлично, как это сделать? в винде на 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  


Цитата(Iron Bug @ 25.4.2012, 7:53) *
я не имею дел конкретно с 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, 15:51) *
собрал 4.5 gcc обновилась, g++ почему то нет (-v по прежнем 4.1.3), сейчас устанавливаю 4.7, может поможет... не понял почему обновилась только gcc без g++ :(

потому что gcc и gcc-c++, как и gcc-fortran разные вещи.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 25.4.2012, 12:11
Сообщение #25


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(maint @ 25.4.2012, 11:10) *
Цитата(loh @ 25.4.2012, 15:51) *
собрал 4.5 gcc обновилась, g++ почему то нет (-v по прежнем 4.1.3), сейчас устанавливаю 4.7, может поможет... не понял почему обновилась только gcc без g++ :(

потому что gcc и gcc-c++, как и gcc-fortran разные вещи.

а где взять source для сборки gcc-c++? :rolleyes:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 25.4.2012, 12:42
Сообщение #26


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(loh @ 25.4.2012, 18:11) *
Цитата(maint @ 25.4.2012, 11:10) *
Цитата(loh @ 25.4.2012, 15:51) *
собрал 4.5 gcc обновилась, g++ почему то нет (-v по прежнем 4.1.3), сейчас устанавливаю 4.7, может поможет... не понял почему обновилась только gcc без g++ :(

потому что gcc и gcc-c++, как и gcc-fortran разные вещи.

а где взять source для сборки gcc-c++? :rolleyes:

srpm то один должен быть. Во время сборки указывается., если память не изменяет, в опциях сборки. Ну а если tarball то в опциях configure
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 27.4.2012, 19:43
Сообщение #27


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Iron Bug @ 25.4.2012, 6:53) *
я не имею дел конкретно с Qt, но общелинюксовые настройки gcc таковы:
поиск библиотек при выполнении в какой-то папке -Wl,-rpath <путь>. Например, для поиска в локальной папке -Wl,-rpath. (точка важна).
статическая линковка libstdc++: -static-libstdc++
статическая линковка libgcc: -static-libgcc

это параметры куда писать? у меня выдает сообщение что g++ не знаком с параметрами -static-libstdc++ -static-libgcc

как сделать чтобы все библиотеки брались только из -Wl,-rpath. , чтобы я их туда накидал и архивом с программой бросил на целевую машину? (а если их там нет, то даже на машине для разработки появлялась бы ошибка)

народ, покажите хотя бы как примерно мейкфайл должен выглядеть чтобы она собирал программу так, что она переносилась на любу систему :sad2:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 27.4.2012, 22:02
Сообщение #28


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(loh @ 27.4.2012, 22:43) *
как примерно мейкфайл должен выглядеть чтобы она собирал программу так, что она переносилась на любу систему

это какой-то сильно сложный автоконфиг надо городить. если хочешь в этом разбираться, копай в сторону 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 - как это можно сделать? :blush2:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 1.5.2012, 13:59
Сообщение #30


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


уже десять раз написали, что -static-libgcc. но со всеми вытекающими отсюда сложностями, естественно. я вообще не знаю, можно ли с таким параметром собрать Qt. обычно это вызывает большие проблемы с взаимодействием динамических библиотек.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 1.5.2012, 16:39
Сообщение #31


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Iron Bug, не, я не про gcc, про glibc

на целевой машине 2.1.3, а там где собираю > 2.3
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.5.2012, 18:22
Сообщение #32


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


loh, как соберешь, опиши здесь как это сделал.
А то чувствуется и мне нужно будет в скором времени собирать Qt под МСВС...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 1.5.2012, 18:46
Сообщение #33


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(ViGOur @ 2.5.2012, 0:22) *
loh, как соберешь, опиши здесь как это сделал.
А то чувствуется и мне нужно будет в скором времени собирать Qt под МСВС...

вопрос праздный. А что задачи на этого непонятного монстра есть ? Писали, я мимо ушей пропустил. Но не видел людей в восторге от системы

Цитата(loh @ 1.5.2012, 22:39) *
Iron Bug, не, я не про gcc, про glibc

на целевой машине 2.1.3, а там где собираю > 2.3

вот ман говорит -static-libgcc. Несложно ?Ну а дальше сами. Пардон не к вам. Но лень новый пост писать

Сообщение отредактировал maint - 1.5.2012, 18:49
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.5.2012, 19:55
Сообщение #34


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(maint @ 1.5.2012, 19:46) *
вопрос праздный. А что задачи на этого непонятного монстра есть ? Писали, я мимо ушей пропустил. Но не видел людей в восторге от системы
Да, есть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 1.5.2012, 20:13
Сообщение #35


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(ViGOur @ 2.5.2012, 1:55) *
Цитата(maint @ 1.5.2012, 19:46) *
вопрос праздный. А что задачи на этого непонятного монстра есть ? Писали, я мимо ушей пропустил. Но не видел людей в восторге от системы
Да, есть.

скажу честно, радует. Так мысли в слух. Извините
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 1.5.2012, 20:24
Сообщение #36


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(maint @ 1.5.2012, 19:46) *
Цитата(ViGOur @ 2.5.2012, 0:22) *
loh, как соберешь, опиши здесь как это сделал.
А то чувствуется и мне нужно будет в скором времени собирать Qt под МСВС...

вопрос праздный. А что задачи на этого непонятного монстра есть ? Писали, я мимо ушей пропустил. Но не видел людей в восторге от системы
к сожалению эта хрень все наши задницы защищает от супостатов :(


Цитата(maint @ 1.5.2012, 19:46) *
вот ман говорит -static-libgcc. Несложно ?Ну а дальше сами. Пардон не к вам. Но лень новый пост писать

как gcc связан с glibc? -static-libgcc я уже применил по нему вопросов нет вроде :unsure:

Цитата(ViGOur @ 1.5.2012, 19:22) *
loh, как соберешь, опиши здесь как это сделал.
А то чувствуется и мне нужно будет в скором времени собирать Qt под МСВС...

ну зависит от версии мсвс и qt..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 1.5.2012, 20:38
Сообщение #37


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(loh @ 1.5.2012, 21:24) *
ну зависит от версии мсвс и qt..
Разумеется 3 версия МСВС и 4 Qt.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 1.5.2012, 21:54
Сообщение #38


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 1.5.2012, 21:38) *
Цитата(loh @ 1.5.2012, 21:24) *
ну зависит от версии мсвс и qt..
Разумеется 3 версия МСВС и 4 Qt.

у меня этих 3их мсвс.. r12,r14изм2,r14изм4 ещё вроде r16 существует

на r14изм4 стоит qt4.4 по умолчанию, gcc > 4, glibc > 2.3
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 1.5.2012, 22:05
Сообщение #39


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


статическая линковка glibc не всегда возможна. то есть, возможна, но если его собрать вручную, без некоторых компонентов (там сетевые какие-то вещи нельзя в статику засунуть и ещё что-то). детальнее можно почитать тут, например.
а так, если эти компоненты не используются, то флаг -static заставляет компилятор линковать всё, что можно, статически. и тогда нужно писать вручную все отдельные линуемые библиотеки.

Сообщение отредактировал Iron Bug - 1.5.2012, 22:08
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 1.5.2012, 22:20
Сообщение #40


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Iron Bug @ 1.5.2012, 23:05) *
статическая линковка glibc не всегда возможна. то есть, возможна, но если его собрать вручную, без некоторых компонентов (там сетевые какие-то вещи нельзя в статику засунуть и ещё что-то). детальнее можно почитать тут, например.
а так, если эти компоненты не используются, то флаг -static заставляет компилятор линковать всё, что можно, статически. и тогда нужно писать вручную все отдельные линуемые библиотеки.

ну а как нибудь как dll ку в винде просто подцепить с собой libc.so.6 можно? или она сама с кучей зависимостей будет? -Wl,rpath,. использовать чтобы эту библиотеку в папке с приложением искала прога?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 2.5.2012, 8:12
Сообщение #41


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


у этой библиотеки в стандартной сборке всегда есть внешние зависимости. а статически она не линкуется из соображений безопасности: ибо если были баги, то они могут быть внесены с цельным исполняемым кодом. теоретически, если оторвать внешние зависимости, можно слинновать статически. но на практике я такого не делала и не знаю, реально ли это провернуть. тем более, если там ещё и Qt замешана.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 30.10.2012, 9:13
Сообщение #42


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


сделаю себе напоминалочку для установки qt на мсвс 3 r12

вначале gcc 4 ставим как тут http://www.acsu.buffalo.edu/~charngda/cc_build.html :
Build GMP (GNU Multiple Precision Arithmetic) library. It's important to build the library statically, i.e. when running the configure script, use 
configure --disable-shared --enable-static --prefix=/tmp/gcc

Build MPFR (Multiple precision floating-point) library. It's important to build the library statically, i.e. when running the configure script, use 
configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc

Build MPC (Multiple precision complex arithmetic) library. It's important to build the library statically, i.e. when running the configure script, use 
configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc

Find a scratch directory, say /scratch. Then 
      cd /scratch
      /tmp/gcc-4.x.y/configure --prefix=/usr/local/ <other options>
    
 where <other options> are:

--enable-languages=c,c++,fortran 
--enable-threads=posix 
--disable-shared (if you want to avoid later "GLIBCXX_3.4.9 not found"-type annoyances) 
--with-gmp=/tmp/gcc 
--with-mpfr=/tmp/gcc 
--with-mpc=/tmp/gcc


потом qt > 4.5 как тут http://axis.bplaced.net/news/545 или тут http://www.prog.org.ru/topic_12303_0.html

/configure -debug-and-release -static -qt-sql-sqlite -no-qt3support -qt-libtiff -qt-libpng -qt-libjpeg -nomake demos -nomake examples -nomake tools -no-webkit -prefix /opt/qt4.6.3static 
make
make install




Сообщение отредактировал loh - 30.10.2012, 9:14
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

5 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 17.4.2025, 10:21