“error: unknown type name 'size_t'” solved while compiling with llvm-gcc

来源:互联网 发布:top域名注册3元便宜 编辑:程序博客网 时间:2024/05/01 14:24

I went into erros while compiling the very simple code below with llvm-gcc:


#include <stdio.h>int main(){printf("nani\n");return 0;}

I got error like: “error: unknown type name 'size_t'” 


It seems that llvm-gcc cannot find the header file which defines size_t(actually the file is <stddef.h>).


I thought it was easy to settle down and added C_INCLUDE_PATH=/usr/include/:/usr/include/linux:/usr/include/i386-linux-gnu to the environment profile.

However, the errors occur still. I was confused by this because I have told llvm-gcc where to locate the header files it needs explicitly by the varible defined in environment profile.

Then I searched for <stddef.h> and found there are several versions of this file and each of them are located in different directories- one of them in /usr/include/liunx and one in another. I opened the versions of the file one by one to find the content of the files are different !!! Actually the one in /usr/include/linux DOES NOT define size_t at all !!!!


Now things get clear. By putting /usr/inlcude/linux in front of the path where the effective <stddef.h> (which defines size_t) is located, I made the compiler use the first one it encountered, that is,  /usr/include/linux/stddef.h. But there is nothing in this <stddef.h>, at least not the things the compiler needs. 


So, the very correct way to solve this problem is adding header files searching paths in the RIGHT ORDER to the environment profile. Here, I did not add /usr/include/linux at all. 


Problem solved.


And for gcc users who encounter the same all similar problems, this solution also works, I think. 

原创粉丝点击