Nowe posty

Autor Wątek: Instalacja sterowników  (Przeczytany 4374 razy)

DePP

  • Gość
Instalacja sterowników
« dnia: 2012-05-02, 14:52:00 »
Witam Mój problem polega na tym iż podczas kompilacji poleceniem make install ze źródła wyskakuje błąd.

   make install
./set_revision.sh
make -C /lib/modules/3.3.2-6.fc16.x86_64/build CONFIG_LINE6_USB=m SUBDIRS=/root/line6usb modules
make[1]: Entering directory `/usr/src/kernels/3.3.2-6.fc16.x86_64'
  CC [M]  /root/line6usb/audio.o
/root/line6usb/audio.c: In function ‘line6_init_audio’:
/root/line6usb/audio.c:30:57: error: ‘THIS_MODULE’ undeclared (first use in this function)
/root/line6usb/audio.c:30:57: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [/root/line6usb/audio.o] Error 1
make[1]: *** [_module_/root/line6usb] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.3.2-6.fc16.x86_64'
make: *** [default] Error 2
dołączam także kod pliku w którym chyba występuje problem:
#include 
#include

#include "driver.h"
#include "audio.h"

static int line6_index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
static char *line6_id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;

/*
        Initialize the Line6 USB audio system.
*/
int line6_init_audio(struct usb_line6 *line6)
{
        static int dev;
        struct snd_card *card;
        int err;

        err = snd_card_create(line6_index[dev], line6_id[dev], THIS_MODULE, 0,
                              &card);
        if (err < 0)
                return err;


       line6->card = card;

        strcpy(card->id, line6->properties->id);
        strcpy(card->driver, DRIVER_NAME);
        strcpy(card->shortname, line6->properties->name);
        /* longname is 80 chars - see asound.h */
        sprintf(card->longname, "Line6 %s at USB %s", line6->properties->name,
                dev_name(line6->ifcdev));
        return 0;
}

/*
        Register the Line6 USB audio system.
*/
int line6_register_audio(struct usb_line6 *line6)
{
        int err;

        err = snd_card_register(line6->card);
      if (err < 0)
                return err;

        return 0;
}

/*
        Cleanup the Line6 USB audio system.
*/
void line6_cleanup_audio(struct usb_line6 *line6)
{
        struct snd_card *card = line6->card;

        if (card == NULL)
                return;

        snd_card_disconnect(card);
        snd_card_free(card);
        line6->card = NULL;
}
Wie ktoś jak temu zaradzić?

Ksanderon

  • Gość
Instalacja sterowników
« Odpowiedź #1 dnia: 2012-05-02, 22:02:11 »
Pozwól, że zapytam na początek, czy na pewno musisz to kompilować i na 100% nie ma gotowej paczki w repozytorium?
Czy zrobiłeś configure etc?
Czy dołączony jest jakiś readme lub howto?

DePP

  • Gość
Instalacja sterowników
« Odpowiedź #2 dnia: 2012-05-03, 10:16:35 »
Już sobie poradziłem z tym problemem. Nowe jądro potrzebuje potrzebuje nagłówka "#include " w pliku "audio.c". Tylko szkoda, że nie wszystko działa na tym sterowniku tak jak powinno, pozostaje tylko czekać na finalną wersję.

Ksanderon, dzięki za próbę pomocy. ;)

Ksanderon

  • Gość
Instalacja sterowników
« Odpowiedź #3 dnia: 2012-05-03, 13:01:00 »
ja wiedziałem w czym tkwił problem z samą kompilacją, z tym, że pytanie czy jest ona jakkolwiek potrzebna- bardzo wiele nowych userów mnoży wątki dotyczące kompilacji podczas gdy powinni mieć wpojone, że prawie wszystko już jest podane, gotowe na tacy a kompilacja jest złem, ostatecznym wyjściem.

DePP

  • Gość
Instalacja sterowników
« Odpowiedź #4 dnia: 2012-05-08, 22:22:39 »
Z tego co wiem to kompilacja jest najlepszą metodą instalacj pakietów tyle, że jest praco/czaso chłonna. Pakiety ściągane już w całości jest po prostu łatwiej zainstalować, więc nie powiedziałbym, że kompilacja to zło koniczne. ;]

Ksanderon

  • Gość
Instalacja sterowników
« Odpowiedź #5 dnia: 2012-05-08, 23:22:03 »
to jest najgorsza metoda instalacji- musisz potem (człowiek znaczy się) pamiętać o aktualizacji- czyli tak na prawdę nigdy jej nie wykonasz.

Co więcej gdy kiedyś będziesz chciał zainstalować to oprogramowanie inaczej lub podobne/zależne będziesz posiadać wiele kopii tego samego, dodatkowo mogą nawet powstać konflikty. Systemy zarządzania pakietami(apt, yum, portage, pacman) nie są wymysłami znudzonych życiem programistów- tak jak wskazuje nazwa zarządzają. Zarządzanie w czymś tak ogromnym jak system wraz z oprogramowaniem jest podstawą.

Czasem robi się nawet taki myk aby na siłę instalować pakiet(i zwalić brudną robotę na system), którego oficjalnie nie ma, że tworzy się odpowiedni pakiet i umieszcza go we własnym lokalnym repozytorium.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Instalacja sterowników
« Odpowiedź #6 dnia: 2012-05-09, 00:20:23 »
Akurat umiejętność kompilacji modułów i sterowników jest bardzo użyteczną cechą i pozwala zaoszczędzić mnóstwo czasu.

Przykład portage'a to tak trochę strzał w stopę z Twojej strony, bo obala większość Twoich argumentów o "złu kompilacji".

Offline Robert

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2516
    • Zobacz profil
Instalacja sterowników
« Odpowiedź #7 dnia: 2012-05-09, 21:50:34 »
vanhelzing, nikt nie twierdzi, ze umiejętność kompilacji jest nieprzydatna. Zauważ jednak, ze kompilując programy w systemie opartym np na rpm można łatwo sobie naieszac w systemie.

Prosty przykład - nie tak dawno wielu użytkowników instalowało przez kompilacje stery własnościowe nvidii. I wszystko ładnie chodziło, dopóki nie zaktualizowali jądra. Po takiej operacji zamiast iksów wizieli tylko czarny ekran i wpadali w czarną rozpacz.

Samo ./configure, make i make intall to trochę za mało, żeby zarządzać systemem. Standardowemu użytkownikowi zaleca się. aby instalował programy z pakietów binarnych, co w jakiś sposób chroni jego system (niestety, nie w 100 %).
Zanim popełnisz grafomaństwo: 1 | 2 | 3
Baza RPM Jak szukać informacji