./config maka make install

Форум предназначен для новичков. В нем предполагается рассматривать вопросы, которые встают на первых этапах освоения Linux
Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

fa3a, программа написана на ruby. GUI через биндинг к сишной библиотеке. Соответсвенно нужна сама либа, биндинг, и ruby.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
fa3a
Неотъемлемая часть форума
Сообщения: 619
Зарегистрирован: 25 июл 2003, 17:22
Откуда: Minsk

Сообщение fa3a »

Что такое биндинг к сишной библиотеке?? Первый раз встречаю такой термин, плиз поясни.
Never touch the running program!!!

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Возможно я не сосем корректно выразился. Binding - это нечто, позволяющее программе писаной на языке (как правило) более высокого уровня, обращаться к библиотеке написаной на другом языке. Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C и как правило содержит высокоуровневую обертку.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
fa3a
Неотъемлемая часть форума
Сообщения: 619
Зарегистрирован: 25 июл 2003, 17:22
Откуда: Minsk

Сообщение fa3a »

Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C
Хм.. не знал, что из скриптовых языков можно сишные функции вызывать! Т.е. получается, что я могу из перлового скрипта например вызвать функцию, которую я на писал на С++ и слинковал в статическую либу?? Круто!

Лана, не суть. Я имел в виду, что если высокоуровневая обертка для изи-инстоллера была написана на FOX-e, то по моему супер скромному мнению ее можно бы было сбилдить статически для того чтобы не инсталлировать FOX.
Never touch the running program!!!

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

fa3a писал(а):
Позволяет использовать к примеру из скриптовых языков вызывать функции определенные с библиотеках на C
Хм.. не знал, что из скриптовых языков можно сишные функции вызывать! Т.е. получается, что я могу из перлового скрипта например вызвать функцию, которую я на писал на С++ и слинковал в статическую либу?? Круто!
Это называется extension, расширение. Всегда так можно было делать, и если говорить о Perl или любом другом современном скриптовом языке, то огромное количество библиотек включают себя писанные на C расширения. Достаточно запустить команду

Код: Выделить всё

find /usr/lib/perl -name '*so'
чтобы в этом убедиться.
Изображение

Аватара пользователя
fa3a
Неотъемлемая часть форума
Сообщения: 619
Зарегистрирован: 25 июл 2003, 17:22
Откуда: Minsk

Сообщение fa3a »

круто однако! Я так понимаю, что для каждой новой библиотеки (либы) достаточно просто написать свой перловый extension (на С), вероятно воспользовавшись неким Perl API (должны же быть точки входа для перла!), и потом как-то заставить перл подгрузить этот extension (шареную либу). Если так, то сама идея плагинов конечно не нова, но ее присутствие очень расширяет возможности скриптовых языков..
Never touch the running program!!!

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

Так оно и есть.
Изображение

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

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...

Аватара пользователя
fa3a
Неотъемлемая часть форума
Сообщения: 619
Зарегистрирован: 25 июл 2003, 17:22
Откуда: Minsk

Сообщение fa3a »

вещь однозначно!!
Never touch the running program!!!

Аватара пользователя
leikind
Неотъемлемая часть форума
Сообщения: 811
Зарегистрирован: 20 июн 2002, 03:02
Откуда: Брюссель
Контактная информация:

Сообщение leikind »

Но то что показал мендоза, и extensions, о которых мы говорили суть разные вещи. DL - это динамический вызов функций из библиотек.
Изображение

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Сообщение mend0za »

первое не исключает второе

можно писать extensions на DL или вообще напрямую обращаться к функциям.
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...

Ответить