User Tag List

Página 3 de 3 PrimerPrimer 123
Resultados 31 al 37 de 37

Tema: Dudas con programación en C

  1. #31

    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    22,749
    Mencionado
    226 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    2,240
    Agradecer Thanks Received 
    1,902
    Thanked in
    Agradecido 1,185 veces en [ARG:2 UNDEFINED] posts
    Como te dice hardyx deberías tener una opción de linkado -lc donde pone tulink -la -o blablabla pues pon ahí después del -la -lc.
    Incluso lo del bat tb se podría poner en el makefile (son super útiles los makefiles una vez los entiendes).

    Te dejo un enlace sobre el proceso de compilado de GCC, donde explica los 4 pasos que sigue el compilador y linker y demás que seguro que te lo explica mejor que yo: http://codingfreak.blogspot.nl/2008/...ss-in-gcc.html

  2. #32

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,357
    Mencionado
    93 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    374
    Agradecer Thanks Received 
    1,801
    Thanked in
    Agradecido 951 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por ^MiSaTo^ Ver mensaje
    Sí, seguramente no esté linkando bien, como ha dicho tb swapd0 (y yo más arriba :P).
    Sí, lo había visto, pero no le habíais explicado al pobre qué es linkar y cómo podía solucionar su error

    Haohmaru, como ya explican en los enlaces que te han pasado, "compilar tu programa" es solo el primer paso. Durante el compilado, cada uno de tus archivos de tu programa se transforma por separado al código de la máquina. Pero 1.- si tienes varios archivos, estos aún no estarán enlazados entre sí 2.- las librerías externas que puedas usar tampoco estarán enlazadas con tu programa. Ése es el segundo paso: linkar, es decir, enlazar entre sí todos los archivos que puedas tener y las librerías externas que utilices.

    Así que como ya te avisan por arriba y voy a repetir para que MiSaTo me vuelva a regañar, te falta una opción -lc en el linkador para que linke también la librería c estándar, es decir, la libc. Ojo: la librería se suele llamar libc y por eso se linka con -lc (el -l es para decir "linka" y el c es el nombre de la librería, sin el lib) Pero por lo que veo en el Makefile los nombres no parecen muy estándar, así que puede ser que la libc no se llame libc...

  3. #33

    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    22,749
    Mencionado
    226 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    2,240
    Agradecer Thanks Received 
    1,902
    Thanked in
    Agradecido 1,185 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por juanvvc Ver mensaje
    Sí, lo había visto, pero no le habíais explicado al pobre qué es linkar y cómo podía solucionar su error

    Haohmaru, como ya explican en los enlaces que te han pasado, "compilar tu programa" es solo el primer paso. Durante el compilado, cada uno de tus archivos de tu programa se transforma por separado al código de la máquina. Pero 1.- si tienes varios archivos, estos aún no estarán enlazados entre sí 2.- las librerías externas que puedas usar tampoco estarán enlazadas con tu programa. Ése es el segundo paso: linkar, es decir, enlazar entre sí todos los archivos que puedas tener y las librerías externas que utilices.

    Así que como ya te avisan por arriba y voy a repetir para que MiSaTo me vuelva a regañar, te falta una opción -lc en el linkador para que linke también la librería c estándar, es decir, la libc. Ojo: la librería se suele llamar libc y por eso se linka con -lc (el -l es para decir "linka" y el c es el nombre de la librería, sin el lib) Pero por lo que veo en el Makefile los nombres no parecen muy estándar, así que puede ser que la libc no se llame libc...
    No, no era regañado! Era estar de acuerdo contigo

  4. #34

    Fecha de ingreso
    Apr 2005
    Ubicación
    Tenerife, Islas Canarias
    Mensajes
    1,454
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Entradas de blog
    3
    Cita Iniciado por juanvvc Ver mensaje
    Sí, lo había visto, pero no le habíais explicado al pobre qué es linkar y cómo podía solucionar su error

    Haohmaru, como ya explican en los enlaces que te han pasado, "compilar tu programa" es solo el primer paso. Durante el compilado, cada uno de tus archivos de tu programa se transforma por separado al código de la máquina. Pero 1.- si tienes varios archivos, estos aún no estarán enlazados entre sí 2.- las librerías externas que puedas usar tampoco estarán enlazadas con tu programa. Ése es el segundo paso: linkar, es decir, enlazar entre sí todos los archivos que puedas tener y las librerías externas que utilices.

    Así que como ya te avisan por arriba y voy a repetir para que MiSaTo me vuelva a regañar, te falta una opción -lc en el linkador para que linke también la librería c estándar, es decir, la libc. Ojo: la librería se suele llamar libc y por eso se linka con -lc (el -l es para decir "linka" y el c es el nombre de la librería, sin el lib) Pero por lo que veo en el Makefile los nombres no parecen muy estándar, así que puede ser que la libc no se llame libc...
    Pues va a ser que no se llama libc porque al añadir la linea me da error..

    Código:
    tulink -la -lc -o $(NAME).abs ngpc.lcf system.lib $(OBJS)
    El ERROr que me da es: TULINK-Fatal-106: Illegal sub option in '-l'

    Voy a tener que leer mucha documentación porque entiendo lo que quereis decirme, pero ya me pierdo con los ficheros

  5. #35

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,357
    Mencionado
    93 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    374
    Agradecer Thanks Received 
    1,801
    Thanked in
    Agradecido 951 veces en [ARG:2 UNDEFINED] posts
    El problema que tienes es que ese SDK parece terriblemente poco estándar, así que solo podrá ayudarte alguien que conozca ese SDK en particular. Que a estas alturas, será muy poca gente.

    Yo "controlo" las opciones del las herramientas compatibles con gnu, pero tengo poca idea de las opciones que manejarán otros compiladores y linkadores.

  6. #36

    Fecha de ingreso
    Apr 2005
    Ubicación
    Tenerife, Islas Canarias
    Mensajes
    1,454
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Entradas de blog
    3
    Pues me parece entonces que me voy a quedar con las ganas jejjejeje

    Gracias igualmente por las molestias.

    Editado:

    Ahora si que me doy cabezasos en la mesa...
    Resulta que si me declaro en código una función llamada strcpy() como la que utiliza la librería string.h el compilador me dice:
    Redeclaration of 'strcpy'...ok entiendo que el compilador detecta que la librería está y encuentra la función, pero si la voy a usar así:

    Código:
    	char *p = "Hello, world!";
    	char a[14];
    	strcpy(a, p);
    Al compilar me dice lo siguiente:
    Código:
    TULINK-Warning-511: Unresolved external symbol "_strcpy"
    TULINK-Error-209: Reference made to unresolved external symbol "_strcpy"
    Chúpate esa!..Esto está fatality...
    Última edición por Haohmaru; 28/11/2012 a las 17:05

  7. #37

    Fecha de ingreso
    Apr 2005
    Ubicación
    Tenerife, Islas Canarias
    Mensajes
    1,454
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1
    Agradecer Thanks Received 
    2
    Thanked in
    Agradecido %1$s veces en 1 post
    Entradas de blog
    3
    Ya he resuelto el asunto. Al final si que he podido utilizar la librería string.h y otras. Solo tenía que incluir en el tulink el fichero C900ML.LIB, y ya compila todo y funciona perfectamente:

    Código:
    tulink -la -o $(NAME).abs ngpc.lcf system.lib C900ML.LIB $(OBJS)
    Sigo a la carga con mi proyecto

Página 3 de 3 PrimerPrimer 123

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •