Hacemos una verificación exhaustiva cada tutoriales de nuestra web con la meta de mostrarte en todo momento la información con la mayor veracidad y actual.
Solución:
Primero, como principiante, siempre debe pedirle a GCC que compile con todas las advertencias y la información de depuración habilitada, es decir gcc -Wall -g
. Pero en algún momento leer Cómo invocar gcc
. Utilice un buen editor de código fuente (como GNU emacs o vim o gedit, etc …) para editar su código fuente C, pero sea capaz de compilar su programa en la línea de comandos (por lo tanto, no utilice siempre un IDE sofisticado para ocultar importante detalles de la compilación de usted).
Entonces probablemente te falte alguna biblioteca específica de Harvard, algunas opciones como -L
seguido de un directorio de biblioteca, luego -l
pegado al nombre de la biblioteca. Entonces es posible que necesites gcc -Wall -g -lcs50
(reemplazar cs50
por el nombre apropiado) y es posible que necesite algunos -L
algún-dir
Observe que el orden de los argumentos del programa a gcc
es significante. Como regla general, si a
depende de b
deberías poner a
antes de b
; más específicamente sugiero
- Comience con el
gcc
nombre del programa; añade el C nivel estándar, por ejemplo-std=c99
si quisiera - Ponga opciones de advertencia, depuración (u optimización) del compilador, p. Ej.
-Wall -g
(es posible que incluso desee agregar-Wextra
para recibir aún más advertencias). - Coloque el directorio define e incluya del preprocesador, por ejemplo
-DONE=1
y-Imy-include-dir/
- Ponga su C archivo fuente
hello.c
- Coloque los archivos de objeto con los que está vinculando, es decir,
bar.o
- Pon los directorios de la biblioteca
-Lmy-lib-dir/
si es relevante - Pur los nombres de las bibliotecas
-laa
y-lbb
(cuando ellibaa.so
depende delibbb.so
, en ese orden) - Terminar con
-o your-program-name
para dar el nombre del binario producido. No uses el nombre predeterminadoa.out
Opciones de presentación de directorio -I
(para preprocesador incluye) y -L
para las bibliotecas se puede dar varias veces, el orden es significativo (orden de búsqueda).
Muy rápidamente, querrá utilizar herramientas de automatización de compilación como GNU make
(quizás con la ayuda de remake
en Linux)
Aprenda también a usar el depurador gdb
.
Adquiera el hábito de pedir siempre advertencias al compilador y siempre mejore su programa hasta que no reciba advertencias: el compilador es su amigo, ¡lo está ayudando!
Leer también Cómo depurar programas pequeños y el famoso SICP (que enseña conceptos muy importantes; es posible que desee utilizar guile
en Linux mientras lo lee, consulte http://norvig.com/21-days.html para obtener más información). Tenga también en cuenta herramientas como valgrind
Divertirse.
Necesita vincular la biblioteca durante la compilación. La biblioteca debe terminar en .a o .so si está en Ubuntu. Para vincular contra una biblioteca:
gcc -o myProgram myProgram.c -l(library name goes here but no parentheses)
Tomo este curso y, a veces, necesito practicar sin conexión mientras viajo o me desplazo. En Windows, usando MinGW y Notepad ++ como IDE (porque me encanta y lo uso generalmente mientras codifico Python) finalmente encontré una solución y algo de tiempo para escribirlo.
Empezando desde cero. Pasos para configurar el compilador gcc C, si ya está configurado, salte al 5
- Descarga Git e instálalo. Incluye Git Bash, que es un terminal linux MINGW64. Prefiero usar Git porque necesito herramientas de Linux como sed, awk, pull, push en mi Windows y puedo reemplazar la terminal de Guthub.
- Una vez instalado Git, asegúrese de que los paquetes gcc estén instalados. Puede usar mi configuración como referencia …
-
Asegúrese de que su compilador funcione. Tírale este simple código,
- guardándolo en su directorio de trabajo Documentos / Harvard_CS50 / Week2 /Hola C
#include
int main(void) printf("Hello StackOverflown"); - comienzo Git Bash -> navegar al directorio de trabajo
cd Documentos / Harvard_CS50 / Week2 /
- compilarlo en bash terminal
gcc helloworld.c -o helloworld.exe
- ejecutarlo usando bash terminal
./helloworld.exe
Hola StackOverflow
- Si tú ves Hola StackOverflow, su compilador funciona y puede escribir código C.
Ahora, lo importante: instalar la biblioteca CS50 localmente y usarla sin conexión. Esto debería ser aplicable a cualquier otra biblioteca que se presente más adelante en el curso.
-
Descargue el archivo de código fuente más reciente cs50.cy el archivo de encabezado cs50.h de https://github.com/cs50/libcs50/tree/develop/src y guárdelos en Documentos / Harvard_CS50 / src
-
Navegue al directorio src y enumere los archivos para asegurarse de que está en la ubicación correcta usando
ls
cs50.c cs50.h
-
Genial, estamos aquí. Ahora necesitamos compilar el archivo de objeto para la biblioteca usando
gcc -c -ggdb -std = c99 cs50.c -o cs50.o
-
Ahora, usando el archivo de objeto cs50.o generado, podemos crear nuestro archivo de archivo de biblioteca cs50.
ar rcs libcs50.a cs50.o
-
Después de todos estos pasos, terminamos con 2 archivos adicionales a nuestros archivos originales. Estamos interesados en solo 2 de ellos cs50.hlibcs50.a
ls
cs50.c cs50.h cs50.o libcs50.a
-
Copie los archivos de encabezado y biblioteca en sus ubicaciones de destino. Mi MinGW está instalado en C: así que los copio allí
cs50.h -> C: MinGW include
libcs50.a -> C: MinGW lib
Prueba de la biblioteca cs50
Para asegurarnos de que nuestra biblioteca funcione, podemos lanzar uno de los scripts de ejemplo en la conferencia y ver si podemos compilarlo usando el archivo de encabezado cs50.h para el método get_string ().
#include
#include
int main(void)
printf("Please input a string to count how long it is: ");
string s = get_string();
int n = 0;
while (s[n] != ' ')
n++;
printf("Your string is %i chars longn", n);
-
Compile el código cs50 usando las bibliotecas gcc y cs50. Quiero ser explícito y usar:
gcc -ggdb -std = c99 -Wall -Werror test.c -lcs50 -o test.exe
Pero simplemente puede señalar la fuente, el nombre del archivo de salida y la biblioteca cs50
gcc test.c -o test.exe -lcs50
Aquí vamos, el programa se compila usando el encabezado y los métodos se pueden usar dentro.
Si desea Notepad ++ como un IDE, puede seguir este consejo para configurarlo con gcc como compilador y ejecutar su código desde allí. Solo asegúrese de que su script nppexec incluya la biblioteca cs50
npp_save
gcc -ggdb -std=c99 -Wall -Werror "$(FULL_CURRENT_PATH)" -lcs50 -o "$(CURRENT_DIRECTORY)$(NAME_PART).exe"
cmd /c "$(CURRENT_DIRECTORY)$(NAME_PART).exe"
Recuerda que tienes la opción de valorar este ensayo si tropezaste tu obstáculo .