Перемещение от Windows до [закрытой] Ubuntu

9
задан harms 2 May 2010 в 21:20
поделиться

9 ответов

Как я могу выполнять свои скомпилированные программы для Linux извне (вне IDE)? В Windows я просто запускаю сгенерированный исполняемый файл (.exe)

В Linux вы делаете то же самое. Единственное отличие состоит в том, что в Linux текущий каталог по умолчанию не находится в PATH, поэтому обычно вы это делаете:

./myapp

Если вы добавляете текущий каталог к ​​пути

PATH=".:$PATH"

, то подойдет Windows-подобный способ

myapp

, но это не рекомендуется из-за угроз безопасности, по крайней мере, в общих средах (вы не хотите запускать / tmp / ls, оставленный кем-то).

Как я могу распространять свое приложение linux? В Windows я просто распространяю исполняемые файлы с соответствующими файлами DLL (если они есть)

Если вы серьезно относитесь к распространению, вам, вероятно, стоит узнать об этом. deb (Ubuntu, Debian) и .rpm (RedHat, CentOS, SUSE). Это «пакеты», которые позволяют пользователю легко установить приложение, используя специфический для дистрибутива способ.

Есть также несколько проектов установщиков, которые работают аналогично генераторам установщиков Windows, но я рекомендую сначала изучить первый путь.

Что эквивалентно LIB (статическая библиотека) и DLL (динамическая библиотека) в Linux и как их использовать?

.a (статическая) и .so (динамическая). Вы используете их более или менее так же, как и в Windows, конечно, используя параметры компиляции, специфичные для gcc. Я не использую Code :: Blocks, поэтому не знаю, как выглядят их диалоги, в конце концов, речь идет о добавлении -llibrary к параметрам связывания (угадайте, что: в Windows речь идет о добавлении / llibrary ;-))

Можно ли использовать «двоичную форму» библиотеки C ++ (если она есть), чтобы мне не пришлось перекомпилировать весь исходный код библиотеки?

Да.И множество библиотек уже присутствует в дистрибутивах.

Также обратите внимание, что если вы используете .deb и .rpm для распространения, вы можете сказать «моему приложению нужны такие-то и такие-то библиотеки», и они будут установлены из архивов дистрибутива. И это рекомендуемый способ, в общем, вам НЕ следует распространять свою копию библиотек.

Если я хочу создать приложение wxWidgets в Linux, какой пакет мне выбрать для Ubuntu? wxGTK или wxX11? Могу ли я запустить программу wxGTK под X11?

Сначала попробуйте wxGTK, диалоги могут выглядеть лучше, следует использовать темы gnome и т. Д.

Если нет вопроса. 4 возможен ответ, существует ли там предварительно скомпилированная библиотека wxX11 / wxGTK? Не пробовал глубокий поиск в Google.

Попробуйте

apt-cache search wx

(или создайте свой Центр программного обеспечения Ubuntu и найдите wx)

Короче говоря: вы найдете все, что вам нужно, в архивах распространения.

16
ответ дан 4 December 2019 в 09:12
поделиться

Поскольку Ubuntu поставляется с пакетами wxGTK, вам определенно следует использовать их при построении. Однако для разработки вы должны использовать отладочную версию, поэтому было бы неплохо собрать ее самостоятельно, но для развертывания сборка на основе пакетов, предоставляемых системой, кажется лучше.

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

2
ответ дан 4 December 2019 в 09:12
поделиться

Почему бы просто не придерживаться того, что вы знаете, и не разрабатывать в .NET? Ubuntu поставляется с Mono. Вы можете продолжать использовать Visual C++ или перейти на C# и сделать свою жизнь намного проще.

1
ответ дан 4 December 2019 в 09:12
поделиться

Я просто добавил немного информации к ответу rlbond'а.

  1. Это зависит от версии Linux. Если вы используете Ubuntu - создайте deb-пакет. (http://ubuntuforums.org/showthread.php?t=51003)

Могу ли я запустить программу wxGTK под X11?

Да, если у вас установлен пакет wxGTK :)

0
ответ дан 4 December 2019 в 09:12
поделиться
  1. Перейдите в папку с скомпилированной программой и выполните ./program
  2. Отправьте программу, плюс любые .so файлы
  3. .a — это статическая библиотека, .so — разделяемые библиотеки.
  4. Да, но часто сначала нужно скомпилировать его самостоятельно.

Однако не уверен в дистрибутивах wxWidgets.

3
ответ дан 4 December 2019 в 09:12
поделиться

1, Unix обычно не имеет определенного расширения для исполняемого файла - так что myprog.exe будет просто myprog. Возможно, вам придется установить его как исполняемый, если IDE не делает этого автоматически, введите "chmod +x myprog"

5, Для wxWindows я бы скачал исходники и собрал его, проверьте инструкции по сборке, но, вероятно, это просто вопрос "configure;make;make install". Обычно в Unix вы собираете libs из исходников, чтобы они могли правильно найти все компоненты на вашей машине - у вас также есть исходники примеров и т.д.

0
ответ дан 4 December 2019 в 09:12
поделиться

Общий совет новичкам в Linux, но технически подкованным, таков: Вы должны научиться правильно использовать выбранный вами дистрибутив.

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

В меню Система->Администрирование в Ubuntu найдите инструмент Synaptic, который позволяет искать репозитории пакетов в Интернете. Вы почти наверняка найдете пакеты для нужных вам библиотек, а также все инструменты.

1
ответ дан 4 December 2019 в 09:12
поделиться

Это не совсем отвечает на ваши вопросы, но я думаю, что это правильная рекомендация.
У вас есть две проблемы, с которыми вы пытаетесь справиться:

  1. Среда Linux.
  2. Убедиться, что ваша программа переносимой.

На вашем месте я бы загрузил CodeBlocks на Windows и запустил бы его под Cygwin или Mingw, это поможет вам убедиться, что ваш код переносим на разные платформы. Вы знакомы с окружением и получите максимальную производительность, преодолев препятствие в виде ОС.

Когда вы будете удовлетворены вышесказанным, возьмите свой код и перенесите его на Linux. На этом этапе любые усилия по переносу должны быть тривиальными.

0
ответ дан 4 December 2019 в 09:12
поделиться

Когда вы говорите, что ваша программа не появилась, я предполагаю, что вы имеете в виду, что она была там в браузере файлов, но когда вы дважды щелкнули по ней, вы получили курсор был занят на мгновение, а затем ничего не произошло?

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

Возможно, вы захотите прочитать страницу руководства для ld.so , т.е. введите

man ld.so

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

0
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: