include에 대한 궁금증
#include <~~.h>와 "~~.ㅗ"의 차이는 무엇인가요?
그리고 제가 system call을 추가하는 것을 해보는데
source가 있는 곳은 /usr/src/linux-2.6.22.9/kernel에 시스템 콜 함수를 구현했는데요
컴파일하면 #include 를 못찾더라구요
그래서 time.h를 찾아보니까 /usr/src/linux-2.6.22.9/include에는 없고
/user/include/sys/time.h더라구요
새로운 커널 소스에는 time.h가 없는 건가요? 기본으로 제공된다고 생각했는데 좀 이상하네요^^;;
그래서 #include "/usr/include/sys/time.h"라고 했는데
그래도 어마어마한 error가 뜨더라구요 T.T
#include "/usr/include/sys/time.h"
#include
#include
#include
asmlinkage int sys_pedagogictime(int flag, struct timeval *thetime)
{
int write_failed;
struct timeval gettime;
cli();
gettime.tv_sec = xtime.tv_sec;
gettime.tv_nsec = xtime.tv_nsec;
sti();
write_failed = verify_area(VERYFY_WRITE,thetime,sizeof(struct timeval)); if(write_failed){
printk("skelcall: Cannot write into user space\n");
return;
}
memcpy_tofs(thetime, &gettime, sizeof(struct timeval));
if(flag == 1)
printk("%ld.%ld\n",gettime.tv_sec,gettime.tv_nsec);
return 0;
}
이거 좀 보시고요 어디 문제 있으면 말씀좀 해주세요. 그냥 xtime이라는 변수에서 읽어서요 return해주는 것이고, flag가 true면 printk로 화면에 뿌려주는 거고요
<> 이거는 표준
<> 이거는 표준 라이브러리. "" 이거는 사용자 라이브러리??
대충 이런걸로 알고 있습니다.^^;
감사합니다.^^
감사합니다.^^
정확한
정확한 의미상으로는
<>는 컴파일러가 미리 지정한 위치 1에서 찾고,
""는 컴파일러가 미리 지정한 위치 2에서 찾고 실패하면 1에서 다시 찾습니다.
""가 <>를 의미상으로 포함하기 때문에 사실 ""로 통일해도 됩니다만
관습적으로는, 표준 라이브러리를 참조할 때 <>를 쓰고
소스가 있는 디렉토리에서 헤더 파일을 찾을 때(즉 사용자가 만든 라이브러리를 사용할 때) ""를 씁니다.
<>는 컴파일러 옵션에
<>는 컴파일러 옵션에 지정한 경로에서 해당 파일을 찾고.. ""는 컴파일 하는 소스를 기준으로 하는 상대경로입니다. ------------------------------------------------------------------------------- It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기