2013-05-31 3 views
0

Я создал общую библиотеку C++ и интегрировал ее с консольным приложением C++, которое вызывается из php. Я пробовал это на своих окнах, и он отлично работает. Теперь мне нужно перенести его на веб-сервер linux. Я знаю, что мне нужно снова скомпилировать консольное приложение C++ в Linux, чтобы запустить его, и также может генерировать совместно используемую библиотеку C++. Я новичок в linux os, как я могу скомпилировать консольное приложение C++ на сервере linux, назначая всю дополнительную библиотеку, включая файлы, файлы заголовков, созданные из общей библиотеки C++, как в Visual Studio? Любая ссылка на это будет высоко оценена. Поскольку разделяемая библиотека от matlab, я должен также назначить файлы и библиотеки include, а также компилировать консольное приложение C++.компиляция консольного приложения C++ в linux

+1

Вы можете нарисовать схему того, какие файлы у вас есть, или показать файл makefile или что-то еще? Я абсолютно уверен, что на этот вопрос можно ответить, но без дальнейших подробностей это будут такие вещи, как «использовать -I для указания включенных каталогов», что может и не быть тем, что вам нужно. –

+0

Что касается материала matlab, имейте в виду, что dll Windows не может использоваться в Linux, вам нужно использовать .a (статические библиотеки) или .so (динамические библиотеки), которые играют ту же роль в Linux, что и .lib и .dll. –

ответ

1

Я думаю, вам понадобится получить Linux port вашей библиотеки, сделанной в Matlab, которая может включать в себя установку Matlab и работу с Linux (и небольшую проверку отладки &).

Когда Lib готов, порт приложение консоли также (отладка и др все.), Откройте терминал, то: -

gcc -Wall console_app.c /path/to/your/libFromMatlab.a -o console_app 

Если источник вашей консольного приложения охватывает несколько файлов, вы можете рассмотреть вопрос о используя IDE, например code::blocks, или используйте make-файл для упрощения вашей работы.

Добавьте свой «libFromMatlab.so» (обратите внимание на .so vs .a выше) на путь к библиотеке (или скопируйте его туда, где находятся остальные), затем убедитесь, что у вашего консольного_контента установлен флаг исполняемого файла.

NB: Разработка на любой платформе, отличной от целевой платформы без кросс-компиляции, эквивалентна игре в русскую рулетку ... только менее смертоносным.

----- EDIT ------
я наткнулся на this article и мысли раздел 4 может иметь некоторое значение.

Смежные вопросы