LINUX.ORG.RU

Компиляция для Linux


0

2

Скомпилируйте! а... уже голова болит, короче мне надо скомпилировать .pas файл для Линукса, что-бы он с командной строки запускался, потому что мне надо чтобы его потом на сервере запускать, а у самого стоит только винда и убунту, а Free Pascal IDE не компилирует под таргет на Линукс x64_6432, выдает ошибку:

PPU Loading D:\FPC\2.4.2\units\i386-Win32\rtl\system.ppu PPU is compiled for another processor (2,1) Fatal: Can't find unit system used by t6 (0) Fatal: Compilation aborted

и конечно почему так, я не знаю, но если на винду компилировать так всё норм, программа то ведь работает без библиотек, от она и сама:

program e5;
var T:text;
begin
Assign(T,'4T'+paramstr(1));{$I-}Reset(T);{$I+}
rewrite(T); write(T,paramstr(2)); close(T);
end.

от эту маленькую хрень мне и надо скомпилировать, чтобы потом можно было с командной строки запускать, лучше будет если мне скажут как её компилировать для Линукса x64_6432 из под Винды, но если что, то хоть скомпилируйте так как есть, а то весь вечер уже мучаюсь)



Последнее исправление: Derek (всего исправлений: 1)

Ответ на: комментарий от anonymous

и правда, странноватая архитектура и мне так же не понятно откуда директория D:\ в Linux.

Автор, соберись с мыслями!

fang90 ★★★★★
()
Ответ на: комментарий от anonymous

зайди в Free Pascal IDE и прочитай, как я понял это типа х86_64, но смысл не в этом, кто может скомпилировать это для линукса?

Derek
() автор топика
Ответ на: комментарий от fang90

из под Винды

я сижу на Винде! а мне надо файл который будет работать на Линуксе, и устанавливать Линукс только для того чтобы компилировать ПАС файлы из-за того что Фри Паскалю что-то не нравиться, я не хочу)

Derek
() автор топика
Ответ на: комментарий от fang90

возникли проблемы... мне надо мой запрос, который я использую в винде для cmd, сделать такой же только для Линукса, от запрос(запрос на командную строку идет с одной директории с файлом)

сall some 0.txt text type 0.txt

ну если кто не понял, то должна запуститься программа some с параметрами 0.txt и text, а потом она должна прочитать текстовый файл 0.txt, как мне переделать запрос под командную строку Линукса?

Derek
() автор топика
Ответ на: комментарий от Derek

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

Runtime error 2 at $0000000000400221 $0000000000400221 $0000000000400178

а от запрос

./some 0.txt some

, я не не понял в чем дело, по идее компиляция не за компилировала;)) или я что-то опять не правильно делаю, скорее всего последние))

Derek
() автор топика

безпробеловслепилдругкдругуузнаюстуденческийговнокод

FollowTheRabbit
()
Ответ на: комментарий от Derek

>я сижу на Винде! а мне надо файл который будет работать на Линуксе, и устанавливать Линукс только для того чтобы компилировать ПАС файлы из-за того что Фри Паскалю что-то не нравиться, я не хочу)

Если из-под операционки X собрать программу для операционки Y и не протестировать ее, она не будет работать на операционке Y. Исключением является код, авторы которого уже договорились точно, как надо писать, чтобы все работало и хорошо настроили среду сборки. При этом публичные релизы все равно надо тестировать.

Ставить линукс не обязательно, возьмите LiveCD.

x64_6432 — это, если я правильно ошибаюсь, какой-то ядрёный способ компиляции, позволяющий использовать регистры x64 в 32-битном режиме.

Возможно, курение манов надо начинать отсюда: http://wiki.freepascal.org/Cross_compiling

proud_anon ★★★★★
()
Ответ на: комментарий от anon_666

>Это невозможно даже теоретически, если имеются в виду gpr.

Да, меня это тоже заинтересовало. Пойду исходник почитаю.

proud_anon ★★★★★
()
Ответ на: комментарий от anon_666

Чего-то у меня даже Hello, World под эту x64_6432 не компилируется. Под i386 работает.

Если я правильно понимаю, x64_6432 выдает 32-битный ELF, но работает на 64-битном процессоре. Наверное, нужна 64-битная система. В этом случае можно в принципе получить доступ к 64-битным регистрам, раз процессор в long mode. Не знаю, правда, зачем это может быть нужно.

Программа ТС у меня компилируется, но выдает тот же Runtime Error, что у ТС.

Пусть кто-нибудь знающий расскажет нам про x64_6432!

proud_anon ★★★★★
()
program e5;
var T:text;
begin
Assign(T,'4T'+paramstr(1));{$I-}Reset(T);{$I+}
rewrite(T); write(T,paramstr(2)); close(T);
end.

Мне одному показалось, что ее проще переписать на ходовом в линуксе языке программирования?

Igron ★★★★★
()
Ответ на: комментарий от anon_666

>Это невозможно даже теоретически, если имеются в виду gpr.

Единственное, что я нашел по этому поводу, вот:
http://www.sandpile.org/post/msgs/20004724.htm

Там написано, что процессоры на основе AMD K8 при выполнении 32-битной операции в режиме совместимости модифицируют верхние 32 бита 64-битных регистров предсказуемым образом (хотя это и не документировано). Возможно, это и имеется в виду. Но такой костыль еще покруче линии A20.

proud_anon ★★★★★
()
Ответ на: комментарий от ptah_alexs

> Зачем городить такой костыль хз.

Дельфийщик же.

Igron ★★★★★
()
Ответ на: комментарий от flareguner

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

Derek
() автор топика

Программа делает echo bla-bla-bla >> file, если я не ошибаюсь. А вообще это что-то непонятное reset это открытие файла на чтение, а rewrite — на запись, но они идут подряд, на одном файле. Короче, что у ОП в тексте на русском, то у него и в тексте на паскале.

Artificial_Thought ★★★★
()
Ответ на: комментарий от AITap

когда програма запускаеться из-под консоли винды, командой call someprogramm.exe 45 dsf то 45 это первый параметр, а dsf будет второй, то есть функции paramstr(1) возврящают эти параметры, если программа была запущена через консоль, а всё остальное означает типа такого: Открываем файл с именем '4T'+paramstr(1) в данном каталоге, если такого нету то создаем, если есть то перезаписуем, потом мы просто записуем в него paramstr(2) и закрываем, от и всё

Derek
() автор топика
Ответ на: комментарий от Derek

с под консоли винды работает нормально, может проблема в то как паскаль открывает файл, ну что-то с файловой системой, или он не может получить параметры с консоли линукса?

Derek
() автор топика
Ответ на: комментарий от Derek

Если файла еще нет, reset должен вывалиться с ошибкой. rewrite - да, просто новый создаст, но reset-то раньше стоит...

Axel
()

Вот до чего доводят окна. «Программисты» не знают о существовании cat. :(

geekless ★★
()
Ответ на: комментарий от Axel

ну попробуйте тогда скомпилировать это

program wrPHP;
var T:text;
begin
Assign(T,'4T'+paramstr(1));
rewrite(T); write(T,paramstr(2)); close(T);
end.
да cut может и подойдет, но мне надо научиться и протестировать выполнение своих программ!

Derek
() автор топика
Ответ на: комментарий от Derek

и вообще сейчас буду пробовать на java что-то написать, если смогу с ней разобраться по-быстрому)))

Derek
() автор топика
Ответ на: комментарий от Derek

>>да cut может и подойдет, но мне надо научиться и протестировать выполнение своих программ!
Но зачем?

Artificial_Thought ★★★★
()
Ответ на: комментарий от Derek

>и вообще сейчас буду пробовать на java что-то написать, если смогу с ней разобраться по-быстрому)))

Месье знает толк в извращениях.

geekless ★★
()
Ответ на: комментарий от Derek

Для родной системы компилируется, работает, все в порядке что в виндовсе, что в линуксе. Для левой системы - у меня нету модулей, ставить их лень, так что как-нибудь в другой раз. И, да: прежде чем тестировать лучше прочитать мануалы.

Axel
()
Ответ на: комментарий от devl547

я так и знал что этим все закончиться ))) ладно все что мне нужно было я узнал, всем спасибо))

Derek
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.