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 makedi file yang tidak dikompresi.
Saya menulis program pertama ( lsperintah 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.
includeyang 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.
.hFile - file termasuk prototipe untuk fungsi-fungsi. Implementasinya ada di dalam .soatau .afile yang perlu ada di kotak. Ini adalah perpustakaan dinamis & statis yang berisi fungsi.
apue.h?
err_{quit,sys}?