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

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

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

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

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

Сообщение B4rr4cuda »

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

Сообщение Sergei I. Gorelkin »

Это официальная позиция команды, отраженная в документации.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

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

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

Сообщение Alexx2000 »

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

Теоретически, что нам помешает это сделать. Тем более не так много функций из LIbc используется.
Попробую поставить 64 битный Линукс, и посмотреть, что да как.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

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

Отлично.

ЗЫ:
Хохма в том что некоторые юниты (UnixUtils например) тоже пользуются libc. Что довольно странно при такой "официальной позиции команды"...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

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

Проблемы наверняка в совместимости даже не с x64, а со всякими PowerPC с другим endianness. Кроме того, даже если код модуля libc будет в полном порядке, из-за наличия в природе нескольких разновидностей libc (GLibc, uclibc и др.) обязательно найдется система, на которой что-то да не заработает.
Аватара пользователя
Alexx2000
постоялец
Сообщения: 491
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Проверил, ошибок не мало, однако Libc здесь не причем.
Например возникает ошибка при преобразовании Integer в TObject и обратно.
Закомментировав ошибки, кое как удалось откомпилировать и запустить.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

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

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

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

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

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

А, скомпиленное ранее, запускается нормально?
Аватара пользователя
Alexx2000
постоялец
Сообщения: 491
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

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

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

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

Не запускается, вообще не признает за исполняемый файл. (Ubuntu 7.10 64 bit)
Вроде для того чтобы запускались 32 битные бинарники, надо еще и 32 битные либы иметь, а у меня их похоже нет.
Аватара пользователя
Deepthroat
постоялец
Сообщения: 144
Зарегистрирован: 06.09.2007 00:21:34
Откуда: Outer Heaven
Контактная информация:

Сообщение Deepthroat »

На правах оффтопа.
А у Вас в 64-битной системе смартлинк при задании в командной строке/конфиг-файле параметра -Cx работает?
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

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-ить...
Все же удобно хранить в обьектах связанные с неким строковым значением числовые данные, не хотелось бы от этого отказываться...
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

А может заменить все интежеры на независящие от разрядности системы типы? Или не в этом проблема?
Аватара пользователя
Alexx2000
постоялец
Сообщения: 491
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

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

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

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

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

Сообщение Иван Шихалев »

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

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

Сообщение B4rr4cuda »

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

Век живи, век учись - все равно дураком помрешь. ©Народ
Беру PtrInt на вооружение. :)
Ответить