¿A qué se refieren las líneas de compilation y enlace?

Estoy haciendo una transición lenta de Windows a Linux, así que tenga en count mis preguntas aparentemente simples. Al instalar la biblioteca cudnn, me encontré con esto en el file INSTALL.txt :

Agregue [installpath] a su process de construcción y enlace agregando -I [installpath] a su línea de compilation y -L [installpath] -lcudnn a su línea de enlace.

¿Qué significa comstackr y vincular la línea? ¿Hago esto, al comstackr myFile.c que usa cudnn:

 gcc myFile.c -L /path/to/library -l /name/of/library 

¿O algo mas?

PD: También han mencionado que hagan esto:

 cd <installpath> export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH 

¿Pero no tendré que escribir esto en mi file .bashrc para que la variable de entorno esté configurada cada vez que se ejecute mi máquina?

Related of "¿A qué se refieren las líneas de compilation y enlace?"

Su command gcc combina la fase de compilation y enlace, por lo que debe agregar todas las opciones dadas:

 gcc -Iincludepath myFile.c -Llibpath -lcudnn 

reemplazando includepath y libpath según corresponda.

Y sí, probablemente quieras editar tu .bashrc para establecer LD_LIBRARY_PATH :

 export LD_LIBRARY_PATH=libpath:$LD_LIBRARY_PATH 

reemplazando libpath según corresponda

includepath necesita apuntar a los encabezados (files .h ), libpath a la biblioteca ( .so ).

La compilation y el enlace son los dos pasos principales en la creación de un ejecutable. Ambos pueden hacerse con el command gcc . También hay un paso de preprocesamiento (antes de la compilation) y un ensamblaje (después de la compilation); estos casi siempre se hacen al mismo time que la compilation, por lo que la combinación "preprocess, luego comstackr y luego ensamblar" se trata como un solo paso llamado "compilation" para abreviar.

Los pasos realizados por una línea de command de gcc particular se pueden determinar de la siguiente manera:

Escriba la order "preprocesar, comstackr, ensamblar, vincular".

Si el file de input se llama *.i , elimine el paso de preprocess (los files .i ya están preprocesados).

Si el file de input se llama *.s , elimine el preprocess y compile los pasos (los files .s ya están comstackdos).

Si el file de input se llama *.o , elimine los pasos de preprocess, compilation y ensamblaje (se ensamblan los files .o ).

Si hay una opción -x , úsela en lugar del nombre del file de input en los pasos anteriores. (Esto es raro)

Si se usa la opción -c , elimine el paso del enlace.

Si se usa la opción -S , elimine los pasos de ensamblaje y enlace.

Si se usa la opción -E , elimine los pasos de compilation, ensamblaje y enlace.

En resumen, el tipo de file de input determina dónde comienza en la secuencia preprocess-compile-assemble-link, y las opciones -c / -S / -E determinan dónde se detiene (solicitan files de salida de tipo *.o , *.s , y *.i respectivamente – aunque -E realidad se envía a stdout por defecto).

Su línea de command no tiene ninguna de las opciones de tipo de salida, y su file de input se llama *.c , por lo que es una línea de compilation y una línea de enlace. Esta es una forma normal de comstackr progtwigs pequeños. Con progtwigs más grandes, generalmente no desea comstackr todo de una vez. Es mejor save los files intermedios *.o para su reutilización y solo recomstackrlos cuando cambie su file fuente.

El ciclo de desarrollo "recomstackr según sea necesario" involucra commands gcc -c para crear los files *.o , generalmente de uno en uno, y un command gcc *.o -o theprogram para hacer el enlace. Estos commands se encuentran comúnmente en un Makefile y se conocen como "líneas de compilation" y "líneas de enlace".