Problemas Específicos de Compilación

¿Qué significa undefined reference to 'compress' ?

En general, significa que se estan teniendo problemas para encontrar o linkar la librería de compresión (libz). ***In general, it means that it is having trouble finding or linking to the compression library (libz). Primero, asegúrate de que está instalada. Si no es así, entonces encuentrala e instálala. Debería ir incluida en todas las distribuciones más importantes de sistemas Unix y similares.

Si está instalada correctamente, y todavía aparece el error, entonces comprueba si existe alguna otra copia de libz danzando por ahí. Un lugar donde se esconde a menudo cuando la gente tiene problemas es en /usr/X11R6/lib , ya que XFree86 pone una copia allí. Es seguro simplemente borrarla, pero si no estás seguro, renómbrala como algo parecido a libz.so.renamed , de esa forma el linker no la encontrará, y si tienes problemas en otra parte por haberla renombrado, siempre puedes volverla a renombrar.

¿Qué es AC_TRY_RUN , y por qué está mi máquina advirtiendome de ello?

Algunas veces, cuando ejecutamos aclocal, autogen o make, aparecerán lineas parecidas a: configure.in:171: warning: AC_TRY_RUN called without default to allow cross compiling . No es algo para estar preocupado, y puedes ignorarlo sin riesgos (a menos que estés cross compiling). ****This is nothing to be alarmed about, you can safely ignore it (unless you are cross compiling).

Si todavía sientes curiosidad, un cross compiler es un compilador basado en una plataforma que puedes usar para crear código para ser ejecutado en una plataforma diferente. Por ejemplo, alguna gente tiene una versión de GCC instalada en una box GNU/Linux con procesadores Intel que crean binarios para boxes SGI con procesadores MIPS. En este caso estaríamos hablando de un cross compiler. ****If you're still curious, a cross compiler is a compiler based on one platform that you can use to create code to run on a different platform. For example, some people have a version of GCC installed on GNU/Linux boxes with Intel processors which makes binaries for SGI boxes with MIPS processors. This would be a cross compiler.

La macro AC_TRY_RUN se llama para intentar compilar y ejecutar un fragmento de código. Se usa para comprobar si un determinado trozo de código tiene la posibilidad de funcionar en otra máquina o no, y ajustar la configuración consecuentemente. Sin embargo, si estás cross compiling, no puedes ejecutar el fragmento de código, ya que es de una máquina diferente a la que estás. La macro AC_TRY_RUN incluye un parámetro para que diga que hacer en ente caso, pero no hemos probado a cross-compiling GNOME todavía, por lo que sería prematuro configurar este valor. Debido a la ausencia de este valor, aparece un warning. *****The AC_TRY_RUN macro is called to attempt to compile and run a code fragment. It is used to test to see whether a particular piece of code is likely to work on your machine or not, and adjust the configuration accordingly. If you are cross-compiling, however, you can't run the code fragment, since it's on a different machine than the one you are on. The AC_TRY_RUN macro includes a parameter to tell it what to do in this case, but we haven't tested cross-compiling GNOME yet, so it would be premature to configure this value. Because the value is absent, it gives the warning.