./config maka make install
Возможно я не сосем корректно выразился. Binding - это нечто, позволяющее программе писаной на языке (как правило) более высокого уровня, обращаться к библиотеке написаной на другом языке. Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C и как правило содержит высокоуровневую обертку.
Опыт растет прямо пропорционально выведенному из строя оборудованию
Хм.. не знал, что из скриптовых языков можно сишные функции вызывать! Т.е. получается, что я могу из перлового скрипта например вызвать функцию, которую я на писал на С++ и слинковал в статическую либу?? Круто!Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C
Лана, не суть. Я имел в виду, что если высокоуровневая обертка для изи-инстоллера была написана на FOX-e, то по моему супер скромному мнению ее можно бы было сбилдить статически для того чтобы не инсталлировать FOX.
Never touch the running program!!!
- leikind
- Неотъемлемая часть форума
- Сообщения: 811
- Зарегистрирован: 20 июн 2002, 03:02
- Откуда: Брюссель
- Контактная информация:
Это называется extension, расширение. Всегда так можно было делать, и если говорить о Perl или любом другом современном скриптовом языке, то огромное количество библиотек включают себя писанные на C расширения. Достаточно запустить командуfa3a писал(а):Хм.. не знал, что из скриптовых языков можно сишные функции вызывать! Т.е. получается, что я могу из перлового скрипта например вызвать функцию, которую я на писал на С++ и слинковал в статическую либу?? Круто!Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C
Код: Выделить всё
find /usr/lib/perl -name '*so'
круто однако! Я так понимаю, что для каждой новой библиотеки (либы) достаточно просто написать свой перловый extension (на С), вероятно воспользовавшись неким Perl API (должны же быть точки входа для перла!), и потом как-то заставить перл подгрузить этот extension (шареную либу). Если так, то сама идея плагинов конечно не нова, но ее присутствие очень расширяет возможности скриптовых языков..
Never touch the running program!!!
2 fa3a: я использовал такую фичу в нашем проекте, вызов setrlimit из кода ruby
вызов из динамического языка билиотек Си - это вещь!
Код: Выделить всё
# setrlimit/getrlimit implementation
#
# for CPU time set
#
# Author:: Vladimir Shahov
# Inspired by:: Alexander Bokovoy
require "dl/import"
require "dl/struct"
module LIBC
extend DL::Importable
begin
dlload "libc.so.6"
rescue
dlload "libc.so.5"
end
extern "int getrlimit(int, struct rlimit *)"
extern "int setrlimit(int, const struct rlimit *)"
Rlimit=struct [
"ulong rlim_cur",
"ulong rlim_max",
]
# from /usr/include/bits/resource.h: RLIMIT_CPU = 0
RLIMIT_CPU=0x0
end
# class Ulimit
# set and get CPU (ulimit -t) limits
#
# has problems, when call from non-root users
class Ulimit
UNLIMITED_CPU=4294967295
def Ulimit.set_cpu(new_limit=UNLIMITED_CPU)
val=LIBC::Rlimit.malloc
val.rlim_cur=new_limit
val.rlim_max=new_limit
return LIBC::setrlimit(LIBC::RLIMIT_CPU, val)
end
def Ulimit.get_cpu
val=LIBC::Rlimit.malloc
LIBC::getrlimit(LIBC::RLIMIT_CPU, val)
return val.rlim_cur
end
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...