Разве libc только для x86?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Разве libc только для x86?

Сообщение B4rr4cuda » 19.06.2008 13:42:33

Один товарищ на форуме DC спрашивает, можем ли мы в DC не использовать Libc, и приводит ссылку.
Правда ли что
The Free Pascal libc unit is deprecated Kylix compatability (and thus
legacy). It is moreover linux/x86 only.
или деза?
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Разве libc только для x86?

Сообщение Sergei I. Gorelkin » 19.06.2008 14:25:50

Это официальная позиция команды, отраженная в документации.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Разве libc только для x86?

Сообщение B4rr4cuda » 19.06.2008 16:38:23

Ага, thx нашел в FAQ.
Это конечно просто прекрасно и замечательно, но аналогов некоторых функций нет в Baseunix и др.
Насколько безболезненно будет выдрать их из либц (импорты фунц, типы и т.п.)?
Будут ли нормально работать?

ЗЫ. 64 битной машины рядом нет, проверить не могу, соответственно только потому и спрашиваю.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Разве libc только для x86?

Сообщение Alexx2000 » 19.06.2008 17:20:08

B4rr4cuda писал(а):Насколько безболезненно будет выдрать их из либц (импорты фунц, типы и т.п.)?
Будут ли нормально работать?

Теоретически, что нам помешает это сделать. Тем более не так много функций из LIbc используется.
Попробую поставить 64 битный Линукс, и посмотреть, что да как.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Разве libc только для x86?

Сообщение B4rr4cuda » 19.06.2008 17:47:50

Alexx2000 писал(а):Попробую поставить 64 битный Линукс, и посмотреть, что да как.

Отлично.

ЗЫ:
Хохма в том что некоторые юниты (UnixUtils например) тоже пользуются libc. Что довольно странно при такой "официальной позиции команды"...
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Разве libc только для x86?

Сообщение Sergei I. Gorelkin » 19.06.2008 18:27:09

UnixUtils - вроде раньше в packages/extra был, т.е. не входит в состав компилятора/rtl. Там вполне имеют право быть непортабельные вещи.

Проблемы наверняка в совместимости даже не с x64, а со всякими PowerPC с другим endianness. Кроме того, даже если код модуля libc будет в полном порядке, из-за наличия в природе нескольких разновидностей libc (GLibc, uclibc и др.) обязательно найдется система, на которой что-то да не заработает.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Разве libc только для x86?

Сообщение Alexx2000 » 19.06.2008 20:01:30

Проверил, ошибок не мало, однако Libc здесь не причем.
Например возникает ошибка при преобразовании Integer в TObject и обратно.
Закомментировав ошибки, кое как удалось откомпилировать и запустить.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Разве libc только для x86?

Сообщение B4rr4cuda » 19.06.2008 23:38:52

Sergei I. Gorelkin писал(а):Проблемы наверняка в совместимости даже не с x64, а со всякими PowerPC с другим endianness.

Ну, только потому и забивать на столь полезный юнит? Нет уж, берем отвертку и наковыриваем оттуда полезных функций... :lol:

Alexx2000 писал(а):Например возникает ошибка при преобразовании Integer в TObject

Размерность типов в 64битках другая (или все же указателей?) - жаль, что такая идиома теряется.

Alexx2000 писал(а):Закомментировав ошибки, кое как удалось откомпилировать и запустить.

А, скомпиленное ранее, запускается нормально?
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Разве libc только для x86?

Сообщение Alexx2000 » 20.06.2008 00:47:46

B4rr4cuda писал(а):Размерность типов в 64битках другая (или все же указателей?) - жаль, что такая идиома теряется.

Насколько я понимаю указатели 64 битные, из-за этого и проблемы. Хотя у меня есть кое какие идеи, как можно сделать чтоб работало. Посмотрим...

А, скомпиленное ранее, запускается нормально?

Не запускается, вообще не признает за исполняемый файл. (Ubuntu 7.10 64 bit)
Вроде для того чтобы запускались 32 битные бинарники, надо еще и 32 битные либы иметь, а у меня их похоже нет.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Разве libc только для x86?

Сообщение Deepthroat » 20.06.2008 00:53:31

На правах оффтопа.
А у Вас в 64-битной системе смартлинк при задании в командной строке/конфиг-файле параметра -Cx работает?
Аватара пользователя
Deepthroat
постоялец
 
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven

Re: Разве libc только для x86?

Сообщение B4rr4cuda » 20.06.2008 02:56:49

Alexx2000 писал(а):Хотя у меня есть кое какие идеи, как можно сделать чтоб работало. Посмотрим...

Ну, на правах мозгового штурма, для интов в обьектах:
Код: Выделить всё
type TIC=class
        AData:integer;
        constructor Create(I:integer);
        end;
....
contructor TIC.Create(i:Integer);
begin
Self.AData:=i;
end;
...
Некий_Лист.AddObject('фыва',TIC.Create(некая_переменная));
...
x:=TIC(Некий_Лист.objects[x]).Adata;

И не забыть потом это добро отFree-ить...
Все же удобно хранить в обьектах связанные с неким строковым значением числовые данные, не хотелось бы от этого отказываться...
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Разве libc только для x86?

Сообщение Brainenjii » 20.06.2008 08:31:11

А может заменить все интежеры на независящие от разрядности системы типы? Или не в этом проблема?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Разве libc только для x86?

Сообщение Alexx2000 » 20.06.2008 10:03:25

Deepthroat писал(а):А у Вас в 64-битной системе смартлинк при задании в командной строке/конфиг-файле параметра -Cx работает?

Вечером проверю, и отпишусь.

Brainenjii писал(а):А может заменить все интежеры на независящие от разрядности системы типы? Или не в этом проблема?

Я тоже об этом думал, вместо Integer использовать PtrInt, который как раз соответствует разрядности указателей. По идее должно корректно работать и там и там.
Вообщем надо пробовать...
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Разве libc только для x86?

Сообщение Иван Шихалев » 20.06.2008 10:54:33

Alexx2000 писал(а):Например возникает ошибка при преобразовании Integer в TObject и обратно.

В чистом виде ошибка того, кто таким пользуется. Про PtrInt уже года два твердят.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Разве libc только для x86?

Сообщение B4rr4cuda » 20.06.2008 17:53:31

Иван Шихалев писал(а):В чистом виде ошибка того, кто таким пользуется. Про PtrInt уже года два твердят.

Век живи, век учись - все равно дураком помрешь. ©Народ
Беру PtrInt на вооружение. :)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru