Hallo,
habe ein kleines Programm, welches sich leider nicht uebersetzen laesst.
Hier der Aufruf von make:
make gif2mask
gcc -g -Wall gif2mask.c -o gif2mask -lungif -lm -lz
/usr/lib/libungif.so: undefined reference to `XDestroyImage'
/usr/lib/libungif.so: undefined reference to `XGetWindowAttributes'
/usr/lib/libungif.so: undefined reference to `XGetImage'
/usr/lib/libungif.so: undefined reference to `XGetPixel'
/usr/lib/libungif.so: undefined reference to `XQueryColors'
collect2: ld returned 1 exit status
make: *** [gif2mask] Error 1
Da der Quelltext recht kurz ist, erlaube ich mir mal den mit zu posten:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <gif_lib.h>
#include <zlib.h>
#define max(a,b,c) (((a)>(b))?(((c)>(a))?(c):(a)):(((c)>(b))?(c):(b)))
void error(char *msg)
{
printf("%s:\n\n", msg);
PrintGifError();
exit(-1);
}
unsigned char *readGif(char *fileName, int *length)
{
GifFileType *file;
char *bits;
unsigned char colorMap[256];
unsigned char *data;
int i, nColors, size;
if((file = DGifOpenFileName(fileName)) == NULL)
error("Error opening file");
if(DGifSlurp(file) != GIF_OK)
error("Error slurping file");
/* data should now be available */
nColors = file->SColorMap->ColorCount;
for(i=0; i<nColors; ++i)
{
GifColorType c = file->SColorMap->Colors[i];
colorMap[i] = max(c.Blue, c.Red, c.Green);
}
bits = file->SavedImages[0].RasterBits;
size = file->SWidth * file->SHeight;
data = malloc(size);
for(i=0; i<size; ++i)
data[i] = colorMap[(unsigned char)bits[i]];
*length = size;
return data;
}
void usage()
{
printf("gif2mask - convert a gif image to an alpha mask\n");
printf("\nusage: gif2mask <file.gif>\n");
exit(0);
}
int main(int argc, char *argv[])
{
int len, size;
long outsize;
char *outfile;
unsigned char *data, *outdata;
FILE *mask;
if(argc < 1)
usage();
len = strlen(argv[1]);
if(strcmp(argv[1]+len-4, ".gif") != 0)
usage();
outfile = strdup(argv[1]);
outfile[len-3] = 'm';
outfile[len-2] = 's';
outfile[len-1] = 'k';
data = readGif(argv[1], &size);
outdata = malloc(outsize = (int)floor(size*1.01+12));
/* zlib-compress the gif data */
compress2(outdata, &outsize, data, size, 9);
/* dump to outfile */
mask = fopen(outfile, "wb");
if(fwrite(outdata, sizeof(char), outsize, mask) != outsize)
{
printf("Didn't write all of the file!");
exit(-1);
}
exit(0);
}
die Rechner: suse7.2
paket libungif(4.1.0) ist installiert
paket xdevel(4.0.3) auch (bei dem einen ja, beim andern nicht, gleiches
Ergebnis)
Es scheint so, als ob irgendwas nicht gefunden wird. Wie kann ich das am
besten herausfinden?? Und wie fixe ich sowas?
Habs ja mal spasseshalber mit knoppix3.0 probiert, hat mich aber auch
nicht weitergebracht.
gegoogelt, habe aber nur so etwas in der Art gefunden, dass da
wahrscheinlich irgendwelche sachen von "Xlib eingebunden werden" und dass
das eigentlich fuer die Bibliothek nicht notwendig und komisch sei.
Peter