Как я могу выполнять свои скомпилированные программы для 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)
Короче говоря: вы найдете все, что вам нужно, в архивах распространения.
Поскольку Ubuntu поставляется с пакетами wxGTK, вам определенно следует использовать их при построении. Однако для разработки вы должны использовать отладочную версию, поэтому было бы неплохо собрать ее самостоятельно, но для развертывания сборка на основе пакетов, предоставляемых системой, кажется лучше.
wxX11 - худший выбор, чем wxGTK, используйте его только в тех системах, где wxGTK не существует или требует более новых библиотек GTK, чем доступны.
Почему бы просто не придерживаться того, что вы знаете, и не разрабатывать в .NET? Ubuntu поставляется с Mono. Вы можете продолжать использовать Visual C++ или перейти на C# и сделать свою жизнь намного проще.
Я просто добавил немного информации к ответу rlbond'а.
Могу ли я запустить программу wxGTK под X11?
Да, если у вас установлен пакет wxGTK :)
./program
.so
файлы.a
— это статическая библиотека, .so
— разделяемые библиотеки. Однако не уверен в дистрибутивах wxWidgets.
1, Unix обычно не имеет определенного расширения для исполняемого файла - так что myprog.exe будет просто myprog. Возможно, вам придется установить его как исполняемый, если IDE не делает этого автоматически, введите "chmod +x myprog"
5, Для wxWindows я бы скачал исходники и собрал его, проверьте инструкции по сборке, но, вероятно, это просто вопрос "configure;make;make install". Обычно в Unix вы собираете libs из исходников, чтобы они могли правильно найти все компоненты на вашей машине - у вас также есть исходники примеров и т.д.
Общий совет новичкам в Linux, но технически подкованным, таков: Вы должны научиться правильно использовать выбранный вами дистрибутив.
В вашем случае это означает научиться приобретать нужные пакеты разработки, предоставляемые Ubuntu. Например, некоторые люди советуют скачивать исходники библиотек, которые вы собираетесь использовать, но лучший способ - использовать систему пакетов Ubuntu для загрузки библиотек, на основе которых вы хотите программировать, вместе с заголовками для этой библиотеки (часто помещаются в отдельный пакет), а также отладочными символами для библиотеки (также часто в отдельный пакет).
В меню Система->Администрирование в Ubuntu найдите инструмент Synaptic, который позволяет искать репозитории пакетов в Интернете. Вы почти наверняка найдете пакеты для нужных вам библиотек, а также все инструменты.
Это не совсем отвечает на ваши вопросы, но я думаю, что это правильная рекомендация.
У вас есть две проблемы, с которыми вы пытаетесь справиться:
На вашем месте я бы загрузил CodeBlocks на Windows и запустил бы его под Cygwin или Mingw, это поможет вам убедиться, что ваш код переносим на разные платформы. Вы знакомы с окружением и получите максимальную производительность, преодолев препятствие в виде ОС.
Когда вы будете удовлетворены вышесказанным, возьмите свой код и перенесите его на Linux. На этом этапе любые усилия по переносу должны быть тривиальными.
Когда вы говорите, что ваша программа не появилась, я предполагаю, что вы имеете в виду, что она была там в браузере файлов, но когда вы дважды щелкнули по ней, вы получили курсор был занят на мгновение, а затем ничего не произошло?
Если это так, то это означает, что программа не запустилась, вероятно, потому, что она не смогла найти динамические библиотеки, с которыми она связана. Чтобы диагностировать проблему, вы можете запустить ее с терминала, и тогда вам сообщат, в чем проблема.
Возможно, вы захотите прочитать страницу руководства для ld.so
, т.е. введите
man ld.so
в терминал. Это говорит вам, где компоновщик динамических библиотек Linux ищет библиотеки во время выполнения. Он также отсылает вас к другому полезному инструменту под названием ldd
, с которым я рекомендую ознакомиться, если вы занимаетесь разработкой для Linux.