Baru saja saya mulai membaca buku: Pemrograman Tingkat Lanjut di Lingkungan UNIX® . Saya ingin mencoba menjalankan contoh kode pertamanya. Saya menjalankan Scientific Linux 6.4.
Saya mengunduh kode sumber dan seperti yang tertulis dalam README-nya, saya berlari make
di file yang tidak dikompresi.
Saya menulis program pertama ( ls
perintah mock )
#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;
}
dan letakkan di file yang tidak dikompresi. Sebagai buku telah menyarankan Saya kemudian berlari: gcc myls.c
. Tapi saya mendapatkan kesalahan ini:
# 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
Saya ingin tahu bagaimana saya bisa memperbaiki masalah ini. Saya juga ingin dapat menjalankan kode yang saya tulis di direktori mana pun.
include
yang memiliki file header apue.h
. Tetapi ini adalah satu-satunya file dalam direktori itu. Saya tidak mengerti di mana definisi fungsi sebenarnya berada! Saya pikir seseorang mungkin akrab dengan struktur file kode sumber buku ini di sini.
.h
File - file termasuk prototipe untuk fungsi-fungsi. Implementasinya ada di dalam .so
atau .a
file yang perlu ada di kotak. Ini adalah perpustakaan dinamis & statis yang berisi fungsi.
apue.h
?
err_{quit,sys}
?