Şimdi şu kitabı okumaya başladım: UNIX® Ortamında İleri Programlama . İlk kod örneğini çalıştırmayı denemek istedim. Scientific Linux 6.4 kullanıyorum.
Ben indirilen kaynak kodu ve onun README söylediği gibi, Koştum makesıkıştırılmamış dosya.
İlk programı yazdım (sahte bir lskomut)
#include "./include/apue.h"
#include <dirent.h>
int
main(int argc, char *argv[])
{
DIR *dp;
struct dirent *dirp;
if(argc!=2)
err_quit("usage: test directory_name");
if((dp=opendir(argv[1]))==NULL)
err_sys("Can't open %s", argv[1]);
while((dirp=readdir(dp))!=NULL)
printf("%s\n", dirp->d_name);
closedir(dp);
return 0;
}
ve sıkıştırılmamış dosyaya koyun. Kitap tavsiye ettiği gibi Sonra koştum: gcc myls.c. Ama bu hatayı alıyorum:
# gcc myls.c
/tmp/ccWTWS2I.o: In function `main':
test.c:(.text+0x20): undefined reference to `err_quit'
test.c:(.text+0x5b): undefined reference to `err_sys'
collect2: ld returned 1 exit status
Bu sorunu nasıl çözebileceğimi bilmek istedim. Ayrıca herhangi bir dizine yazdığım bir kodu çalıştırmak istiyorum.
includebaşlık dosyasına sahip bir dizin: vardır apue.h. Ancak bu dizindeki tek dosya budur. Gerçek fonksiyon tanımlarının nerede olduğunu anlamıyorum! Birisinin bu kitabın kaynak kod dosyası yapısına aşina olabileceğini düşündüm.
.hDosyalar fonksiyonları için protypes sayılabilir. Onların uygulamaları .soya .ada kutuda bulunması gereken dosyalar. Bunlar işlevleri içeren dinamik ve statik kütüphanelerdir.
apue.h?
err_{quit,sys}gelmeyi umuyorsun?