2015-10-16 219 views
-1

我正在與一個玉米片的學校項目,我收到一些奇怪的錯誤。你可以看到我的代碼在這裏:just the c file, lemme know if you need more編譯C:未定義的引用'memcpy'

從控制檯輸出看起來是這樣的:

../gnu/gcc -G 0 -c -I../userprog -I../threads -I../machine -c threadtest.c 
../gnu/ld -T newscript -N start.o threadtest.o -o threadtest.coff 
threadtest.o: In function `CreateClerk': 
threadtest.c:804: undefined reference to `memcpy' 
threadtest.o: In function `ApplicationClerkNoCustomerAtRegister': 
threadtest.c:902: undefined reference to `memcpy' 
threadtest.c:902: undefined reference to `memcpy' 
threadtest.c:902: undefined reference to `memcpy' 
threadtest.o: In function `PictureClerkNoCustomerAtRegister': 
threadtest.c:954: undefined reference to `memcpy' 
threadtest.o:threadtest.c:954: more undefined references to `memcpy' follow 
gmake: *** [threadtest] Error 1 

在我的整個玉米片項目文件夾沒有到「的memcpy」(我做了一個查找單個呼叫用Brackets搜索文件)。

下面是一行804+:

struct Clerk CreateClerk(char* _name, int _number, struct PassportOffice* _theOffice, struct Line* theLine) { 
    struct Clerk theClerk; 
    theClerk.name = _name; 
    theClerk.number = _number; 
    theClerk.theOffice = _theOffice; 
    theClerk.myLine = theLine; 
    LineSetClerk(theClerk.myLine,&theClerk); 
    theClerk.dataLock = CreateLock("dataLock",8); 
    theClerk.myBribeCV = CreateCV("myBribeCV",9); 
    theClerk.breakCV = CreateCV("breakCV",7); 
    theClerk.breakLock = CreateLock("breakLock",9); 
    theClerk.walkUpCV = CreateCV("walkUpCV",8); 
    return theClerk; 
} 
+0

會看到我的Makefile的幫助? –

+1

爲什麼你評論你的包含? – user2357112

+0

關於項目規格。我只允許包含我可以爲您提供的「syscall.h」,但它似乎並沒有與問題有任何關係。 Threadtest.c是爲了像用戶程序一樣運行,而syscall.h是我可以使用的內核系統調用。 –

回答

2

您應該使用gcc鏈接,不ld

當您通過gcc鏈接時,它將系統庫提供給ld。如果你通過ld鏈接,你必須指定所有你自己和一堆其他東西。

相關問題