[C con Clase] Borland Turbo C++

Miguel Olave molavec en gmail.com
Vie Feb 24 15:27:42 CET 2012


Samuel,

Muchas gracias por tu tiempo. Voy a darme una tarde completa para
investigar al respecto y matar varias opciones más, ya que creo que el
Turbo C utiliza lo archivos de proyecto .mpj para realizar este llinkeo,
por lo que voy a darle más vueltas a su IDE en DOS, ya que si se ejecuta
tc.exe aparacere este IDE.


Gracias nuevamente.




2012/2/24 Samuel Díaz García <samueldg en arcoscom.com>

> No te puedo profundizar mucho con la línea de comandos, ya que el tc lo
> usaba yo en mis años de universidad porque tenía un 8086 y en la facultad
> tenían un 386, por eso tuve que aprender cómo optimizar código y el tiempo
> de generación de binarios.
>
> Yo te cuento un poco:
>   1) Para usar las funciones necesitas el .H, ahora bien, la
> implementación de las mismas están en el .C. El .C se transformará en OBJ
> (objeto binario).
>   2) Para montar el ejecutable se linkan todos los OBJ. Ahora bien, los
> LIB son un OBJ especial ya compilado que no hay que volver a compilar.
>
> Por ello, para compilar tus .C basta tener los .H (las declaraciones de
> las cosas), ahora bien, para linkar necesitas o el OBJ o el LIB
> correspondiente a las declaraciones que haya en los .H que uses.
>
> De esa forma el compilar lo que hace es transformar los .C en .OBJ y el
> linkar lo que hace es coger lo necesario de los OBJ y LIBs y montar el
> ejecutable (o el binario objetivo del proceso).
>
> Lo que no sé es si con el TCC solo te compila o te invoca después al
> linker, el hecho es que por un lado tendrás que compilar los .C para montar
> los OBJ y después tendrás que coger todos los OBJ y los LIBS que necesites
> y linkarlos.
>
> Lo del modelo de memoria te lo decía porque recuerdo que en la familia
> 8086 se usaba direccionamiento segmentado (SEGMENTO:OFFSET) y el código que
> se generaba podía optimizarse atendiendo a cómo usar ese "modelo de
> memoria" (se establecen los modelos de memoria en los micros 8086 en
> función de la cantidad de memoria que tengas que direccionar dentro de tu
> programa), de forma que había una serie de OBJ's que había que enlazar con
> el enlazador (linkar cocn el linker) para que no hubiese problemas. Además
> tus OBJs los tienes que generar todos atendiendo al mismo modelo de memoria
> e incluso las LIB que uses tienen que ser las adecuadas para el mismo
> modelo de memoria.
>
> Por eso los fabricantes suelen sacar los famosos SDK's y cosas así, para
> obviarnos a los programadores de tales cosas y por eso por aquí el personal
> puede que le suene a chino e-mails como este que yo te he escrito.
>
> En resumen, ten claros los conceptos, indaga un poco en la wikipedia o en
> webs especializadas y  sigue preguntando lo que no entiendas e intenta
> siempre que las preguntas sean lo más concretas posible para que no salgan
> e-mails como este tan genéricos.
>
> Salu2
>
> Miguel Olave escribió:
>
>> Ezequiel:
>>
>>     Efectivamente el fabricante incluso me mandó el compilador (turbo C++
>> version 1.01), e incluso tiene un IDE pero que no está muy refinado por lo,
>> mismo opté por intentarlo a "sangre" usando el tcc directamente.
>>
>> Existe el programa tlink.exe en los binarios del compilador pero me perdí
>> al intentar ocuparlo. ¿Debo buscar los .obj para linkearlos o puedo linkear
>> las .lib? El problema es que hay me perdí rotundamente, ¿algún ejemplo que
>> como ejecutarlo?
>>
>> Samuel:
>>
>>     Lamentablemente, no están los .c por lo que no puedo agregarlos.
>>  ¿cómo se debe realizar ese linkeo? ¿se debería generar algún archivo que
>> mapee ese linkeo?
>>
>>
>> Gracias por vuestra ayuda, me han ayudado a destrabarme.
>>
>>
>>
>>
>>
>> 2012/2/23 Samuel Díaz García <samueldg en arcoscom.com <mailto:
>> samueldg en arcoscom.com>>
>>
>>
>>    Yo recuerdo varias cosas q podrian ayudar.
>>
>>    Agregar el .c de la libreria para q compile y linke automaticamente.
>>
>>    Linkar a mano el los objetos con los libs.
>>
>>    Ojo con el direccionamiento segmentado. No recuerdo si los 186 lo
>>    usaban.
>>
>>    Ahi tienes trabajo para seguir jugando con el tc.
>>
>>    Ah y no olvides q los lib tenian q ser compilados bajo l mismo
>>    modelo de memoria para q la cosa funcione.
>>
>>    Salu2
>>
>>    El 23/02/2012 22:20, "Ezequiel Hernan Di Giorgi"
>>    <hernan.digiorgi en gmail.com <mailto:hernan.digiorgi en gmail.com>>
>> escribió:
>>
>>
>>
>>
>>        El 23 de febrero de 2012 15:42, Miguel Olave <molavec en gmail.com
>>        <mailto:molavec en gmail.com>> escribió:
>>
>>
>>            Estimados,
>>                  Debido a que el tiempo ya a pasado y se han creado
>>            nuevos compiladores, es poca la información y la ayuda que
>>            he podido conseguir acerca del Borland Turbo C++ v1.01, pero
>>            sin duda alguno de Uds. que lleva años de juego pueden
>>            desempolvar esos conocimientos que la experiencia les dio en
>>            favor de otros.
>>
>>                  El asunto es que necesito programar un sistema
>>            embebido con  80186 y el dichoso Turbo C se empecina en
>>            hacerme la vida difícil con la inclusión de librerías. Para
>>            no complicarme con la interfaz gráfica, me propuse usar en
>>            compilador de línea de comandos tcc.exe pero a pesar de que
>>            incluyo las librerías me arroja errores.
>>
>>            EL COMANDO (tal vez por aquí esté el problema):
>>
>>  *****************************************************************
>>            tcc -1 -LD:\ICPLib\u7186EX -ID:\ICPLib\u7186EX HELLO.C
>>
>>            RESULTADO:
>>            *********************************************
>>            D:\ICPProgs\7186\hello_c>tcc -1 -LD:\ICPLib\u7186EX
>>            -ID:\ICPLib\u7186EX HELLO.C
>>            Turbo C++ Version 1.01 Copyright (c) 1990 Borland International
>>            hello.c:
>>            Turbo Link Version 3.01 Copyright (c) 1987, 1990 Borland
>>            International
>>            Error: Undefined symbol _Print in module hello.c
>>            Error: Undefined symbol _GetLibVersion in module hello.c
>>            Error: Undefined symbol _Is7186e in module hello.c
>>            Error: Undefined symbol _InitLib in module hello.c
>>
>>            Available memory 346208
>>
>>            CODIGO (no muy dificil. Imprime hola mundo pero con las
>>            funciones de la librerías del dispositivo):
>>            *****************************
>>            #include <7186e.h>
>>
>>            void main(void)
>>            {
>>                int iType, iVer;
>>                InitLib();                //función librería añadida
>>                iType=Is7186e();    //función librería añadida
>>
>>                if(iType)
>>                {
>>                     iVer=GetLibVersion();   //función librería añadida
>>                     Print("Hello uPAC-7186EX! (Flash memory is %d
>>            K)\r\n", iType);  //función librería añadida
>>                     Print("Library version is %d.%02d\r\n", iVer>>8,
>>            iVer&0xff)    //función librería añadida
>>                 }
>>                else
>>                {
>>                Print("Hello PC!, this program is not run under
>>            uPAC-7186EX.");  //función librería añadida
>>                }
>>            }
>>            ***********************
>>
>>
>>            Cualquier ayuda será más que bienvenida.
>>
>>
>>            _______________________________________________
>>            Lista de correo Cconclase Cconclase en listas.conclase.net
>>            <mailto:Cconclase en listas.conclase.net>
>>
>>
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>            Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>            <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>>
>>
>>
>>        Hola, mira toma con cuidado lo que dire, por que no se mucho del
>>        tema. Pero dire lo poco que se.
>>
>>        Segun tengo entendido cuando se programa con sistemas embebidos,
>>        el fabricante te da el software para realizarlo, te da almenos
>>        un compilador. No conosco ese modelo, ni me imagino el
>>        frabricante, pero en el caso de pic, en la pagina te dan todas
>>        las herramientas.
>>
>>        En los errores los undefined reference se deben a que no basta
>>        con que ponga #include<tuCabezera.h> ya que son los prototipos y
>>        supongo que las funciones estan en binario, por lo que tienes
>>        que hacer al compilar es decirle al linker que te linkee esa
>>        libreria.
>>
>>        Mi corta experiencia con borland fue terrible, era cualquier
>>        cosa a mi gusto. Te recomiendo el gcc o para mi gusto el g++, si
>>        es que puedes compilar un binario desde estos y mandarlo a ese
>>        aparatito, pero no creo. Supongo que necesitas un compilador
>>        especifico para eso, o eso me dice mi logica.
>>        (Esto lo digo por si quieres grabar el software en el
>>        aparatito), si es unicamente comunicacion supongo q vas bien.
>>
>>        Cuestion... fijate el linqueado de las bibliotecas, por que el
>>        problema es de linker, cuando dice undefined reference.
>>
>>        Disculpa mi impresicion. Suerte
>>
>>        _______________________________________________
>>        Lista de correo Cconclase Cconclase en listas.conclase.net
>>        <mailto:Cconclase en listas.conclase.net>
>>
>>
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>        Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>        <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>>
>>
>>    _______________________________________________
>>    Lista de correo Cconclase Cconclase en listas.conclase.net
>>    <mailto:Cconclase en listas.conclase.net>
>>
>>
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>    Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>    <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
> --
>   Samuel Díaz García
>    Director Gerente
> ArcosCom Wireless, S.L.U.
>
> CIF: B11828068
> c/ Romero Gago, 19
> Arcos de la Frontera
> 11630 - Cadiz
>
> http://www.arcoscom.com
>
> mailto:samueldg en arcoscom.com
> msn: samueldg en arcoscom.com
>
> Móvil: 651 93 72 48
> Tlfn.: 956 70 13 15
> Fax:   956 70 34 83
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120224/fa042bc9/attachment.html>


Más información sobre la lista de distribución Cconclase