Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Проблема с компоновкой.


Автор: grisWall 30.5.2015, 18:16
При вводе в консоль 
Код

gcc -o foo foo.c -lX11


выдает такую ошибку: 
Код

ld: Library not found for -lX11


подскажите как этого избежать. При этом объектный файл foo.o, создается на ура. А вот как создать исполняемый файл? Программка простая абсолютно создание пустого окна в библиотеке Xlib. 

Автор: xvr 1.6.2015, 15:31
Запятая после -lX11 действительно есть? Если да, то совершенно напрасно  smile 

Автор: grisWall 1.6.2015, 22:02
Цитата

Запятая после -lX11 действительно есть?


Конечно же нет запятой он выдал бы другую ошибку

Автор: xvr 2.6.2015, 12:05
Посмотрите, где у вас лежат библиотеки X11 (у меня они например лежат в /usr/lib64/, там должны быть либо libX11.a либо libX11.so либо обе) и добавьте путь к ним в компиляцию (через опцию -L)

А в общем это довольно странно - X11 библиотеки должны быть вместе с системными библиотеками, а gcc путь к ним берет по умолчанию.  smile 


Автор: tzirechnoy 3.6.2015, 18:52
Собственно, довольно странно это потому, что симлинк /usr/lib/libX11.so -- ставится вместе с X11/Xlib.h, и находится в том жэ самом пакете XXXXX-devel.

Потому как ты умудрился сделать так, что этот исходник собирается в .o, но не находит libX11 -- это непонятно. Рассказывай, что за дистрибутив, что делал, что за исходник.

Автор: grisWall 22.6.2015, 00:57
Цитата(tzirechnoy @ 3.6.2015,  18:52)
Рассказывай, что за дистрибутив, что делал, что за исходник.

Код

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <X11/Xlib.h>

extern int errno;

int main( void ) {

    Display *d;
    Window w;
    XEvent e;
    char *msg= "Hallo, World!";
    int s;

    if ( (d = XOpenDisplay( getenv( "DISPLAY" ) ) ) == NULL ){
    printf ( "Can't connect X server: %s\n", strerror( errno ) );
    exit( 1 );
    }

    s = DefaultScreen( d );
    w = XCreateSimpleWindow( d, RootWindow( d, s ),
                 10, 10, 200, 200, 1,
                 BlackPixel( d, s ), WhitePixel( d, s ) );
    XSelectInput( d, w, ExposureMask | KeyPressMask );
    XMapWindow( d, w);
    while( 1 ){
    XNextEvent( d, &e );
    if( e.type == Expose){
        XFillRectangle( d, w, DefaultGC( d, s ), 20, 20, 10, 10 );
        XDrawString( d, w, DefaultGC( d, s ), 50, 50, msg, strlen( msg ) );
    }
    if( e.type == KeyPress )
        break;
    }
    XCloseDisplay( d );
    return 0;   
}


Решил поработать с графикой на системном уровне, никогда не работал раньшк...походу с этой сборкой у меня не получится...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)