2013-10-11 6 views
2

C로 프로그램을 작성한 이후로 꽤 오랜 시간이 걸렸습니다. 그렇기 때문에 실제로 컴파일하고 링크하는 것이 매우 혼란 스럽습니다.libuv로 최소 프로그램을 컴파일하려면 어떻게해야합니까?

최근 node.js를 가지고 놀고 있었기 때문에 나는 두려운 부분을 들기 시작할만큼 호기심이 생겼고 현재 libuv를보고있다.

나는 훌륭한 안내서를 발견했지만 실제 컴파일 부분은 크게 건너 뛰었습니다. 대체로 재미있는 사람은 누구나 gcc와 잘 작동한다는 정당한 가정 때문일 가능성이 큽니다.

나는 gtihub에서 최신 libuv를 zip 형식으로 다운로드했으며 작업 폴더에 압축을 풉니 다. README.md에 따라 컴파일하고 설치했습니다. 이 모든 것은 문제없이 잘되었습니다.

내가 컴파일 묶는거야 코드는 내가 main.c의로이 저장 한 http://nikhilm.github.io/uvbook/basics.html

#include <stdio.h> 
#include <uv.h> 

int main() { 
    uv_loop_t *loop = uv_loop_new(); 

    printf("Now quitting.\n"); 
    uv_run(loop, UV_RUN_DEFAULT); 

    return 0; 
} 

에서 오는

이것은 내가 문제 등이 의심 내가 사용하고있는 메이크입니다 그것은 다양한 출처에서 함께 자갈을 깐다. 그리고이 지역의 나의 지식은 말하기가 흐려있다.

main: main.c 
    gcc -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I./libuv-master/include/ -o main main.c -pthread -lrt -lm 
clean: 
    rm main 

이것은 make를 실행 한 결과입니다.

/tmp/ccJbU03z.o: In function `main': 
/home/tom/libuv-test/main.c:5: undefined reference to `uv_loop_new' 
/home/tom/libuv-test/main.c:8: undefined reference to `uv_run' 
collect2: error: ld returned 1 exit status 

나는이 정확히 특정되지는 libuv을 실현,하지만 난에있어 곳은, 그래서 어떤 도움이 많이 주시면 감사하겠습니다. 내가 작품을 만들 수있는 우분투 13.04

답변

5

가장 간단한 Makefile을 사용하고

이,하지만 분명히 내 시스템에 libuv.a의 위치에 따라 다릅니다. 좀 더 일반적인 컴파일 라인을 제공하는이 대답의 편집/새 게시물을 환영합니다.

main: main.c 
    gcc -o main main.c /usr/local/lib/libuv.a -pthread 
clean: 
    rm main 
관련 문제