cudnn 라이브러리를 설치하는 동안 INSTALL.txt
파일에서 다음을 발견했습니다.
컴파일 라인에 -I[installpath]를 추가하고 링크 라인에 -L[installpath] -lcudnn을 추가하여 빌드 및 링크 프로세스에 [installpath]를 추가합니다.
컴파일 및 링크 라인은 무엇을 의미합니까? myFile.c
cudnn으로 컴파일할 때 이렇게 합니까 :
gcc myFile.c -L /path/to/library -l /name/of/library
아니면 다른 것입니까?
추신: 그들은 또한 다음과 같이 언급했습니다.
cd <installpath>
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
.bashrc
그런데 머신이 실행될 때마다 환경 변수가 설정되도록 이것을 내 파일에 작성해야 합니까 ?
답변1
명령 은 gcc
컴파일 단계와 연결 단계를 결합하므로 지정된 모든 옵션을 추가해야 합니다.
gcc -Iincludepath myFile.c -Llibpath -lcudnn
교체는 이용 가능 여부에 includepath
따라 달라질 수 있습니다 libpath
.
.bashrc
예, 설정을 편집해야 할 수도 있습니다 LD_LIBRARY_PATH
.
export LD_LIBRARY_PATH=libpath:$LD_LIBRARY_PATH
libpath
적절하게 교체하십시오.
includepath
.h
헤더 파일( file), libpath
라이브러리( ) 를 가리켜야 합니다 .so
.
답변2
컴파일과 링크는 실행 파일을 만드는 두 가지 주요 단계입니다. 둘 다 명령을 통해 수행할 수 있습니다 gcc
. 전처리 단계(컴파일 전)와 어셈블리(컴파일 후)도 있습니다. 이는 거의 항상 컴파일과 동시에 수행되므로 "전처리, 컴파일, 어셈블리"의 조합은 간단히 "컴파일"이라고 하는 간단한 단계로 간주됩니다. .
특정 명령줄에서 수행되는 단계는 gcc
다음과 같이 결정될 수 있습니다.
"전처리, 컴파일, 어셈블리, 링크"의 순서를 적어보세요.
입력 파일명을 입력하면 *.i
전처리 단계가 제거됩니다( .i
해당 파일은 이미 전처리되어 있습니다).
입력 파일 이름을 입력하면 *.s
전처리 및 컴파일 단계가 제거됩니다( .s
파일이 이미 컴파일되어 있음).
파일 이름을 입력하면 *.o
전처리, 컴파일 및 조립 단계가 제거됩니다( .o
파일이 이미 조립되어 있음).
옵션 이 있는 경우 -x
이전 단계의 입력 파일 이름 대신 사용합니다. (이런 경우는 드뭅니다)
이 옵션을 사용하는 경우 -c
링크 단계를 제거하십시오.
이 옵션을 사용하는 경우 -S
어셈블리 및 연결 단계를 제거하십시오.
이 옵션을 사용 하면 -E
컴파일, 어셈블리 및 연결 단계가 제거됩니다.
요약하면, 입력 파일 유형은 전처리-컴파일-어셈블리-링크 시퀀스에서 시작하는 위치를 결정하고 // -c
옵션은 중지할 위치를 결정합니다(각각 , 및 , 유형의 출력 파일을 요청합니다. 출력은 실제로 stdout으로 출력되지만) 기본적으로) .-S
-E
*.o
*.s
*.i
-E
명령줄에 출력 유형 옵션이 없고 입력 파일 이름이 지정되어 *.c
컴파일 라인이 됩니다.그리고연결선. 이는 작은 프로그램을 컴파일하는 일반적인 방법입니다. 더 큰 프로그램의 경우 일반적으로 모든 것을 한 번에 컴파일하고 싶지 않습니다. *.o
재사용을 위해 중간 파일을 저장하고 소스 파일이 변경될 때만 다시 컴파일하는 것이 좋습니다 .
"필요에 따라 재컴파일" 개발 주기에는 파일을 gcc -c
생성하는 명령(보통 한 번에 하나씩)과 연결을 수행하는 명령이 포함됩니다. 이러한 명령은 일반적으로 Makefile에 있으며 "컴파일 라인" 및 "링크 라인"이라고 합니다.*.o
gcc *.o -o theprogram