Compilar con Eclipse C en ubuntu Headers

Hola,

Llevo media mañana peleandome con Eclipse para programar en C y despues de pelearme en Win7 me he pasado al portatil en Ubuntu que la cosa pinta mejor.
El problema que tengo es que cuando compilo y ejecuto desde Eclipse me lo hace todo bien si mi codigo solo está en mi fichero .C donde se encuentra el main.
El problema es que quiero (logicamente) tener distintos modulos (.C y .H). Normalmente meto todas las cabeceras (.H) en el fichero HEADERS.H, y es éste el que incluyo en cada .C (#include "HEADERS.H").
Pero al compilar me dice que no existen las funciones que utilizo en el main.
Es mas, si meto erorres detectables en tiempo de compilacion en el resto de ficheros .C de mi proyecto, ni los detecta al compilar.

¿De que forma tengo que indicar a Eclipse que quiero que me compile todo lo que tengo en mi carpeta src???

Gracias !!
Cual es el error que te da? uno de compilación? de linkeo? Que dice exactamente el error?
Como has creado el proyecto en Eclipse? Autotools? Executable? Makefile?
Como has creado el resto de los ficheros .c del proyecto?
Cuantas preguntas!! Jeje, no sabia que se podía hacer de tantas formas [mad]

Te digo todo lo que he hecho:
Crear un proyecto con la plantilla de Hola Mundo que trae el eclipse al crear un proyecto (te da la opción de crear un hola mundo).
Al ver que al compilar y ejecutar funcionaba he cogido el código que llevaba desarrollado y lo he sustituido en el main. He compilado y ejecutado y funcionaba.
Ya con eso he visto que el eclipse me funcionaba asique me he puesto ha añadir al proyecto módulos. Creando los ficheros desde New File y después copiando el contenido dentro de ellos (3 modulos). Después me he creado de igual forma el HEADERS.H y ahí he incluido los 3 .H de mis módulos, con include "mod1.h" etc.
En el fichero main y en el resto de .C he incluido el HEADERS.H y al hacer llamadas a funciones de otros módulos desde el main, el eclipse, al darle a Build me dice que no existen esas funciones.

Esta claro que no se está enterando de que existen esos módulos para compilar, porque si cometo errores de sintaxis en algún módulo ni se entera al hacer el Build.

Espero que con esto sepas por donde van los tiros. Creo yo que el eclipse me crea un makefile, aunque yo no lo he llegado a crear ni con el hola mundo. Lo que genero no es un exe, sino un ejecutable desde shell (./miprog)


Muchas gracias
CrosMax escribió: al darle a Build me dice que no existen esas funciones.

Algo como:
"Referencia a X sin definir"
"collect2: error: ld devolvió el estado de salida 1" ?

CrosMax escribió:Esta claro que no se está enterando de que existen esos módulos para compilar, porque si cometo errores de sintaxis en algún módulo ni se entera al hacer el Build.

Me parece extraño que no te agregue los nuevos archivos al makefile autogenerado. Acabo de crear un proyecto nuevo y todos los modulos que creo se agregan al archivo subdir.mk que está en src, por ejemplo mi proyecto se llama testc y los modulos se llaman mod1 y mod2.....

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../src/mod1.c \
../src/mod2.c \
../src/testc.c


Cuando compilo el proyecto de prueba obtengo la salida correcta de compilación (es por lo que preguntaba).

19:09:32 **** Build of configuration Debug for project testc ****
make all
Building file: ../src/mod1.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/mod1.d" -MT"src/mod1.d" -o "src/mod1.o" "../src/mod1.c"
Finished building: ../src/mod1.c

Building file: ../src/mod2.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/mod2.d" -MT"src/mod2.d" -o "src/mod2.o" "../src/mod2.c"
Finished building: ../src/mod2.c

Building file: ../src/testc.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/testc.d" -MT"src/testc.d" -o "src/testc.o" "../src/testc.c"
Finished building: ../src/testc.c

Building target: testc
Invoking: GCC C Linker
gcc  -o "testc"  ./src/mod1.o ./src/mod2.o ./src/testc.o   
Finished building target: testc


Solo hay dos cosas que te puedo sugerir: crea el proyecto nuevamente o escribe tu propio Makefile. No recomiendo usar el modo automático de eclipse para mantener el proyecto ya que no podrás compilar fuera de eclipse. Con el Makefile podrás usar usar cualquier IDE e incluso puedes hacerlo sin uno desde el mismo shell.
Hola codestation,

Parece que ya he conseguido hacerlo funcionar!!
Me he vuelto a hacer el proyecto desde cero, añadiendo los modulos de igual manera (copiando despues el contenido) pero con los nombres en minuscula (no se si tendrá algo que ver).
He hecho un Build Project y ya si que he visto que me aparecian los objetos creados de los modulos ¬_¬
Sin embargo me decia no sé que error de "Hola", que era un proyecto anterior que cree y que intenté renombrar. Al no conseguirlo lo borre de eclipse y del disco.
Asique me he ido a la carpeta Debug y en algunos de los ficheros que indicas tenian puesto el nombre del ejecutable como "Hola" :-| Lo he cambiado a pelo y.. funcionando!

Asique nada. Muchas gracias por tu tiempo!!!
4 respuestas