PDA

Ver la versión completa : Como compilo en c?



morza2
10-09-2004, 15:43
Si, si...ya se que es muuy basica mi duda, pero por favor, me estoy cansando de buscar en la red "COMO COMPILAR" y que solo halla 3 sitios serios o claros.
Tengo un W2000 y mi preg es : tengo codigo.c, que programa/s uso para compilarlo y hacerlo ejecutable? (No C++)
Use el DJGPP....me volvi loco...
Use el dev c++ 4...errores todo el tiempo...

Ayuda por favor, para un usuario "muy poco programador", pero con muchas ganas de aprender...

morza2
10-09-2004, 18:16
gracias...es que mi problema es la total ignorancia en el tema...y es cierto ...al depurar me da siempre errores, y me saca la cabeza no poder entenderlos o arreglarlos, aunque sean el "hola mundo"
probare con el borland

gOrr
10-09-2004, 19:38
Pues yo de todos esos que nombras me quedaría con el DevC++. Es raro eso de que te de errores todo el tiempo. ¿Qué clase de errores?

Giskard
11-09-2004, 06:38
En realidad, si te da errores, no es problema del compilador, sino tuyo. Veamos, las computadoras no razonan, no intuyen lo que quieres, sólo saben de comandos exactos y precisos. Si le ordenas a tu computadora: "mata a Flanders", es obvia la acción de la computadora (no entiende, es estúpida), creo que sería mejor que publicaras aquí el código de tu "hola mundo" y veríamos entonces cual es el problema.

Dwarft
11-09-2004, 12:39
Si, yo tambien tuve algunos problemas para pasarme del djgpp (RHIDE) al Dev-C++. Y la verdad, es mucho mejor el Dev-C++, yo te lo recomiendo, debe de ser problema de codigo.
A parte de esto.. No se como no puedes compilar en el Rhide puesto que es bastante facil.
1.File->New
2.Escribes el codigo .c
3.Lo guardas en unas carpetas especiales (en mi casa, usando WinXP, en la carpeta que se me crea Ple).
4.Compile->Compile (ALT+F9).

Salu2 !

morza2
12-09-2004, 08:18
c:\holaw.c [Warning] passing arg 4 of `MessageBoxA' makes integer from pointer without a cast

no se ...me parece que segun el compiler (visual, borland, GCC, dev, etc) es distinto, no?
es que si quiero compilar un exploit.c siempre me da errores distintos

Dwarft
12-09-2004, 14:24
El compilador puede influir en algunas funciones que metas... Como por ejemplo en rhide puedes utilizar el clsrs(); y en Dev es system("cls"); con la libreria conio.c, pero a la hora de compilar un codigo, a parte de esas tonterias, no deberia de dar mas problemas.

Ademas, lo que te da es un warning, que se puede ejecutar, aunque te puede petar.

Salu2 !

Giskard
14-09-2004, 03:08
c:\holaw.c [Warning] passing arg 4 of `MessageBoxA' makes integer from pointer without a cast

no se ...me parece que segun el compiler (visual, borland, GCC, dev, etc) es distinto, no?
es que si quiero compilar un exploit.c siempre me da errores distintos

es mejor que comiences a hacer programas más sencillos, por lo visto, usaste la función "MessageBoxA" que no es una función propia de C, yo nunca he usado esa función, aunque he visto que aparece en el devCPP.
Para C existe el pritnf y scanf para la entrada y salida de datos. Si lo que quieres es salir de ese primitivo ms.dos y hacer programas más avanzados de windows es necesario tener más conocimientos de programación gráfica (o hacerlo en visual basic :P).

En cuanto a los compiladores, son casi iguales el borland, el turbo C, el GCC y el devCPP, y todos los demás que respeten el estandar.

El visual c++ ya es muy distinto.

El "casi iguales" es por algunas librerías que no comparten (p.ej. conio.h o el graphics.h). Pero las necesarias de C, estan en todos los que compartan el estandar de ansi C.

morza2
14-09-2004, 22:15
ufff...quisiera seguir preguntando pero me van a decir...estudia!
Y tienen razon...
Definitivamente: el mas comodo es el DEV++
Pregunto:
1-Que es conio?, me sirve?
2-Como compilo las "fuentes" que no le son compatibles?

gracias
y voy por mas

Dwarft
14-09-2004, 23:00
conio es una libreria, que mas o menos, es un fichero que contiene funciones y cuando las incluyes en el codigo, puedes utilizarlas.
Contiene funciones de entrada/salida por consola.

A las fuentes a que te refieres ?? Al codigo fuente de un programa tuyo ??
Si es eso, pues, creas un proyecto o un nuevo codigo fuente, escribes lo que tengas que escribir y le das a compilar...

Salu2 !

Giskard
17-09-2004, 00:13
He visto que en tu mensaje quieres compilar un exploit.c
En vista de que hay mucha gente llamada "script kiddies" que bajan expoits para explotar vulnerabilidades sin saber ni siquiera que carajos hacen, los que descubren vulnerabilidades y publican sus exploits muchas veces los mandan con errores o con datos insuficientes para evitar que la gente que no sepa pueda usarlos.
Es decir, que para usar un exploit de esos que aparecen con código fuente, debes saber primero programación, luego, saber cual es la vulnerabilidad que se quiere explotar y cómo explotarla para poder adaptar el código fuente.
Creo, por lo que has escrito, (no sabes qué es conio.h y ni siquiera qué es una librería)que estás empezando desde muy arriba, la lectura y comprensión de códigos fuente es algo que tiene su dificultad, asi que en lugar de bajar codigos ya hechos debes comenzar estudiando códigos mas sencillos y leerte de paso los tutoriales de programación en c que abundan en la red.
Si lo que quieres es usar exploits sin tener conocimento de nada.... suerte.

R00110
17-09-2004, 03:07
mmmm... Giskard yo creia que ibas a decir lo que yo voy a decir ahora pero bueno, no fue así...
he visto que en tu mensaje quieres compilar un exploit.c ... ves a lo ke me refiero ;)
...pero... has escuchado o te has fijado que un programa está hecho para varias plataformas?? por ejemplo: version disponible para 9x,Milenium o NT,2000 o XP,2000,NT etc...
los programas se hacen con códigos fuente y por lo tanto si los programas poseen una plataforma específica es porque es distinto un codigo fuente para windows 98, NT, XP , 2000 etc...
los hackers o la mayoría utilizan un sistema operativo distinto a windows, que generalmente pertenece a la familia *nix , como: SuSe linux, Red hat linux, Unix, fedora core, Mandrake etc...
te explico todo esto puesto que la mayoría de los exploits están escritos (me refiero a su codigo fuente) para plataforma *nix por lo tanto no es posible compilarlos en compiladores para windows... se entiende??

ahora cabe preguntar... y como es que existen programas multiplataforma que sirven para todos los windows por ejemplo??
La respuesta es que han sido programados de una forma especial, utilizando librerías y funciones compatibles con todos los sistemas operativos, esto claro que es más dificil pero es más profesional

saludos, espero que te sirva a empezar...

un codiguito fuente para que juegues y lo pruebes, viene con comentarios :) ...

/*---copia desde aquí...---*/

#include<stdio.h> //esta librería me permite
//usar la función printf();

mifuncion(int valorqueleentrego); //defino los parámetros de
//una función creada
//por mi que más tarde será
//llamada por el codigo

int main(void) //inicio la función main()
//que debe estar en todos
//los programas en c

{ //abro los corchetes de main

int i,retorno; //defino 2 variables como int
//(integer=entero) o sea de
//valor numérico

printf("Acá empieza el programa...\n\n"); //muestro el texto en pantalla
//"\n" --> esto cambia a una nueva linea

for(i=0;i<11;i++) //inicio un ciclo o bucle

//literalmente: haz lo que se encuentra entre los siguientes corchetes
//mientras el valor de i sea menor que 11 (o sea llega hasta 10)
//y cada vez que realizes una vez el ciclo aumenta en 1 el valor de i (i++)
//con valor inicial de i como 0

{ //inicio del ciclo for

printf("el valor de i en este momento del ciclo o bucle es: %d\n",i);
//muestra el valor de i en esa ejecución del ciclo
if(i==10){printf("el ciclo está por terminar\n");
//en el caso que i tenga valor 10 muestra dicho mensaje
}

} //fin del ciclo for

retorno=mifuncion(54); //le asigo a la variable "retorno" el valor de
//retorno de la función que he creado y al mismo
//tiempo llamo a la función que he creado

printf("\nEl valor que devuelve la función es: %d",retorno); //muestro el valor
//que ha retornado
//mifuncion()

return 0; //devuelvo el valor de retorno de main() y por consiguiente
//debo terminar la ejecucion del programa...

/*Esto es un comentario en medio del código*/

//esto tambien es un comentario hasta el final de la linea

//esto es un
//comentario
//de varias lineas

/*esto es un
comentario mucho
más largo*/

/*********************************/
/*esto es un comentario enmarcado*/
/*********************************/

///////////////////////
// al igual que este //
///////////////////////

} //... finalizándo el programa en este lugar

mifuncion(int valorqueleentrego) // el código de mi función

{ //abro el corchete de mi funcion()

int valorderetorno=5; //defino una variable

printf("el valor que se le entregó a la función fue: %d\n",valorqueleentrego);
//mustra el valor de la variable valorqueleentrego recuerda que cuando
//llamé a la función fue con un valor 54 --> mifuncion(54);

return valorderetorno; //la función retorna un valor a la función main()
// para que main() siga ejecutándose hasta donde quedó

} //cierro la función

/*..---hasta aquí--*/

espero que esto le sirva a varios que se quieren iniciar en el mundo de la programación ;)

Puedes bajarte el Turbo C++ 3.0 de Borland desde la siguiente direccion que encontré en google...

http://vaibhavweb.tripod.com/others/tc3.zip

espero que te sirva... ah!! guárdate el codigo en un archivo .cpp y luego la bres con el turbo c++ que todo se ve mejor a color ;) jaja

chegato
26-10-2004, 22:17
bueno como te dicen el problema no es en el compilador sino en ti lo mejor seria que (como todos) no ocupes el DEVC ni el DEVC++ debido a que estan soportados bajo la licencia de mocosoft y nosostros no queremos difundir ni hacer propaganda a estos servicios te recomiendo el compilador gcc o cc de linux oviamente si quieres sr un nverdadero programador ocupa linux y nada mas que linux tienes muxas distrubuciones. Por lo que lei de tu mensaje te recominendo el mandrake que es para tontitos bueno un salu2 que te vaya bien en tu objetivo de programar...
aaa otra cosa si tu estas ocupando DEVC++ !TEN CUIDADO! que CAMBIO LA LEY DE PROGRAMAR te lo explico en vez de poner #include<stdio.h> debes poner #include<stdio> debido a que los estandares ANSI an cambiado ojala que todos lean esto pero eso es nada mas que para un programa de c y c++ que corran bajo un compilador de C++ como el DEVC++ ojala que esat info les aya servido a todos los que se han roto las weas con que no le compila
AAAA y Ademas hanstes del main() (logicamente en DEVC++) debes poner "namespece str " ;
sin espacio o algo por el estilo q no me acuerdo muxo edbido a q hace timepo q no programa en c++ XXDD) bueno eso es todo ahora un ejempla para ti de "hol mundo"

#include<stdio.h>
main()
{
printf("HOLA MUNDO (FUNCIONA MIERDA PORFAVOR PARA ESTE WEON)");
}

PD: debes fijarte que printf("") ; termina con ';' asi que OJO
eso es todo bye

Scar_T
27-10-2004, 00:14
A ver chegato, según todo aquel que no programa más que en linux no es un verdadero programador, yo difiero MUCHO de tu forma de pensar, aquí hay gente, programadores profesionales, que soy muy buenos y si ellos no son verdaderos programadores entonces dime quien si. Otra cosa, yo creia que los programadores de videojuegos si eran verdaderos programadores, ahora veo que no :(, jeje

Por cierto Dev-C++ no es un compilador, es un IDE que usa como compilador la version de gcc para windows :O.

A pero no me hagas mucho caso, ya que soy un "tontito" que usa mandrake.

NeoGenessis
29-10-2004, 20:48
hola c:\holaw.c [Warning] passing arg 4 of `MessageBoxA' makes integer from pointer without a cast indica que le pasas un entero y esperaba un puntero (que en win debe ser long). lo mas probable es que en lugar de pasarle el puntero a una cadena le estes pasando un valor (una variable numerica). Si el codigo no es tuyo y no dicen nada debe ser que el compilador usado por él es distinto al tuyo. Y sobre todo que las convenciones usadas son diferentes.

Si tienes nociones basicas de C aunque sea de ms-dos y sobre punteros es facil de arreglar.