Pregunta

Decidí dejar la instalación de Windows y ahora estoy ejecutando Debian como mi sistema operativo predeterminado. Siempre he codificado en Windows y específicamente con Visual Studio. Actualmente estoy tratando de acostumbrarme a compilar mi código en Linux.

Aunque todavía tengo mucha documentación para leer y no espero que me lo pongan fácil, aún sería bueno obtener algunos consejos sobre dónde comenzar. Tengo algunas preguntas específicas, pero no dude en sugerir / recomendar cualquier otra cosa con respecto al tema.

  • ¿Qué son las guías recomendadas para crear un archivo make, cómo compilo desde este archivo make (¿llamo a g ++ yo mismo, uso 'make'?)
  • Mirando a otro software de Linux, casi siempre parecen tener un archivo de 'configuración'. ¿Qué hace exactamente? ¿Solo verifica si las bibliotecas requeridas están instaladas o hace más que solo verificar los requisitos?
  • ¿Cómo vinculo las bibliotecas y cómo se relaciona esto con mis parámetros makefile o g ++? En Windows compilaría la biblioteca, incluiría algunos archivos de encabezado, le diría a mi vinculador qué archivo lib adicional vincular y copiaría un archivo DLL. ¿Cómo funciona exactamente este proceso en Linux?
  • ¿Recomendaciones para editores de código? Actualmente estoy usando nano y he oído hablar de vim y emacs, pero no sé cuáles son los beneficios de ellos sobre los demás. ¿Hay otros, y por qué los consideraría sobre cualquiera de los tres anteriores? Nota: no estoy buscando un IDE.

Cualquier ayuda, enlaces a guías & amp; ¡La documentación (preferiblemente aquellas que están dirigidas a principiantes) es muy apreciada!

¿Fue útil?

Solución

  

¿Qué son las guías recomendadas para crear un archivo make? ¿Cómo compilo desde este archivo make (¿llamo a g ++ yo mismo, uso 'make'?)

Construyes desde el archivo make al invocar " make " ;. Y dentro de tu makefile, compilas y vinculas usando g ++ y ld.

  

Mirando a otro software de Linux, casi siempre parecen tener un archivo de 'configuración'. ¿Qué hace exactamente? ¿Solo verifica si las bibliotecas requeridas están instaladas o hace más que solo verificar los requisitos?

Es un script que normalmente se usa para configurar varias cosas en función del entorno que se utiliza para la construcción. A veces es solo un script de shell básico, otras veces invoca herramientas como Autoconf para descubrir qué hay disponible al construir. La " configurar " El script también suele ser un lugar para que el usuario especifique varias cosas opcionales para construir o excluir, como la compatibilidad con funciones experimentales.

  

¿Cómo vinculo las bibliotecas y cómo se relaciona esto con mis parámetros makefile o g ++? En Windows compilaría la biblioteca, incluiría algunos archivos de encabezado, le diría a mi vinculador qué archivo lib adicional vincular y copiaría un archivo DLL. ¿Cómo funciona exactamente este proceso en Linux?

ld es el enlazador GNU. Puede invocarlo por separado (que es lo que la mayoría de los makefiles terminarán haciendo), o puede tener delegado de g ++ en él. Las opciones que pasa a g ++ y ld determinan dónde buscar los encabezados incluidos, las bibliotecas para vincular y cómo generar el resultado.

  

¿Recomendaciones para editores de código? Actualmente estoy usando nano y he oído hablar de vim y emacs, pero no sé cuáles son los beneficios de ellos sobre los demás. ¿Hay otros, y por qué los consideraría sobre cualquiera de los tres anteriores? Nota: no estoy buscando un IDE.

Vim y Emacs son editores muy flexibles que admiten un montón de usos diferentes. Use lo que le parezca mejor, aunque le sugiero que quiera algunas cosas mínimas como el resaltado de sintaxis.

Otros consejos

Solo una nota para ir con las respuestas de MandyK.

La creación de archivos de creación a mano suele ser una forma muy inportable de crear variantes de Linux distro / unix. Hay muchos sistemas de compilación para la generación automática de archivos make, construyendo sin archivos make. Autotools GNU , Cmake , Scons , jam , etc.

También para profundizar en la configuración.

  • Comprueba los compiladores disponibles, las bibliotecas, la arquitectura del sistema.
  • Asegúrese de que su sistema coincida con la lista de paquetes compatibles apropiados.
  • Le permite especificar argumentos de línea de comando para especializar su compilación, ruta de instalación, paquetes de opciones, etc.
  • Configure genera un Makefile apropiado para su sistema.
  

¿Cuáles son las guías recomendadas en   creando un archivo make, como compilo   de este makefile (llamo g ++   yo uso "make"?

Aprendí a escribir makefiles leyendo GNU Make manual .

  

Mirando otro software de linux, ellos   casi siempre parecen tener una   'configurar' archivo. Que es exactamente lo que hace   ¿hacer? ¿Solo se comprueba si el requerido?   Las bibliotecas están instaladas o lo hacen   ¿Más que solo verificar los requisitos?

El archivo de configuración suele estar asociado con autotools . Como lo sugiere el nombre del script, le permite configurar el software. Desde la perspectiva del desarrollador, esto significa en su mayoría establecer macros, que determinan las variables, qué bibliotecas están disponibles, y demás. También prueba la disponibilidad de bibliotecas. Al final, el script genera un Makefile GNU, que luego puede usar para compilar e instalar el software.

El sistema de compilación GNU es solo uno de muchos. No me gusta particularmente el sistema de compilación GNU, ya que tiende a ser más lento que otros, y genera un Makefile feo. Algunos de los más populares son CMake , Atasco ( Boost Jam puede ser de interés para C ++) y waf . Algunos sistemas de compilación simplemente generan Makefiles, mientras que otros proporcionan un sistema de compilación completamente nuevo. Para proyectos simples, escribir un Makefile a mano sería fácil, pero " comprobación de dependencia " (para bibliotecas, etc.) también se tendría que hacer manualmente.

Editar: Brian Gianforcaro también señaló esto.

Su pregunta es un poco demasiado general, pero esto es lo que recomendaría:

    Editor
  • : vim y emacs son populares. Lo que más importa, como con la mayoría de las herramientas, es dominar una. Me gusta usar vim porque vi (su descendiente) está disponible en todas partes, pero puede que no sea muy relevante, especialmente si te quedas en Linux. Cualquier editor de programación está bien.

  • configure: a menos que haga proyectos grandes, no se moleste con ello. Es una pesadilla usar y depurar. Solo tiene sentido si pretende distribuir su proyecto; en ese caso, lea el libro automático: http: // sources .redhat.com / autobook / . Como han dicho otros, hay alternativas (cmake, scons, etc ...). Estoy bastante familiarizado con scons y autotools, pero aún uso proyectos de make para pequeños (par de archivos).

Con respecto a la biblioteca compartida: es casi como ventanas, excepto que se vincula directamente con la biblioteca compartida; no hay distinción entre .lib y .dll en Linux. Por ejemplo. para una biblioteca foo con una función foo:

int foo(void)
{
     return 1;
}

Lo construirías de la siguiente manera:

gcc -fPIC -c foo.c -o foo.o
gcc -shared foo.o -o libfoo.so

Un principal (por supuesto, en la vida real, pones la API en un archivo de encabezado):

int foo(void);

int main(void)
{
    foo();
    return 0;
}

Y luego, lo vinculas como:

gcc -c main.c -o main.o
gcc main.o -o main -L. -lfoo 

La -L. está aquí para decir que desea que el vinculador busque en el directorio actual (a diferencia de Windows, esto no se hace de manera predeterminada en Linux), el -lfoo dice que vincula contra la biblioteca foo.

Para comenzar, primero lo señalaré guía para makefiles, también cubre algunas cosas de enlace.
Es solo un pequeño detalle que mi profesor universitario de Ciencias de la Computación nos dio. Me pareció muy claro y conciso, muy útil.

Y en cuanto a un IDE, uso eclipse generalmente porque maneja el makefile también. Sin mencionar que la compilación y la salida estándar están al alcance de su mano en el programa.
Fue diseñado principalmente para el desarrollo de Java, pero también hay un complemento C / C ++.

Recomiendo el libro El arte de la programación de Unix por ESR. Cubre la elección del editor, el lenguaje de programación, etc. También le da un buen sentido a la mentalidad detrás de la programación en Unix o Linux.

Para los editores, probablemente quieras Vim o Emacs. Ambos son diferentes y cuál es mejor es más sobre el gusto personal que cualquier otra cosa. Yo uso Vim. Es ideal para moverse rápidamente alrededor del código y hacer cambios. No me gustaba Emacs tanto, pero a mucha gente le gusta. Emacs es extremadamente extensible y puede usarse para todo, desde un lector de noticias hasta un ide. Prueba ambos y mira lo que te gusta.

  
      
  • ¿Recomendaciones para editores de código? Actualmente estoy usando nano y he oído hablar de vim y emacs, pero no sé cuáles son los beneficios de ellos sobre los demás. ¿Hay otros, y por qué los consideraría sobre cualquiera de los tres anteriores? Nota: no estoy buscando un IDE.
  •   

Si está utilizando Linux con un administrador de ventanas (KDE, Gnome, etc.) también podría considerar usar el editor de texto estándar para su administrador de ventanas. El principal beneficio que tendría sobre vim / emacs / nano es que parecería más familiar para alguien que viene de un entorno Windows: un editor escrito para ejecutarse en el administrador de ventanas tiene una barra de menú, abrir / guardar cuadros de diálogo, deshacer / rehacer y muchas otras características interesantes que los editores de consolas probablemente no pueden igualar. (Aunque emacs y vim son bastante sofisticados en estos días, quién sabe ;-P)

En KDE (que es lo que uso) puedo recomendar KWrite, que es un editor de texto bastante básico pero bastante básico con resaltado de sintaxis; o Kate, que es un editor de texto más sofisticado con algunas características adicionales: administración de sesión, un panel de terminal integrado, invocación automática de make y varios complementos que incluyen un visor de símbolos C / C ++. Generalmente uso Kate para mi trabajo en C ++ cuando no quiero molestarme en configurar un proyecto IDE completo. (Para su información, el IDE para KDE es KDevelop)

  

¿Recomendaciones para editores de código? yo soy   Actualmente uso nano y he oído hablar de   Vim y Emacs, pero no sé qué   Los beneficios de ellos son unos sobre otros.   ¿Hay otros, y por qué lo haría?   considéralas sobre cualquiera de las anteriores   ¿Tres? Nota: no estoy buscando un   IDE.

Vi y Emacs son los dos editores por excelencia de Unix; Si está configurado para usar un editor de texto en lugar de un IDE, uno de ellos o sus derivados (vim, xemacs, etc.) es el camino a seguir. Ambos admiten el resaltado de sintaxis y todo tipo de características, ya sea de forma predeterminada o a través de extensiones. La mejor parte de estos editores es la extensibilidad que ofrecen; emacs a través de una variedad de lisp, y vim a través de su propio lenguaje de scripting.

Personalmente uso Emacs, así que no puedo decir mucho sobre Vim, pero deberías poder encontrar mucha información sobre ambos en línea. Emacs tiene varios buenos tutoriales y referencias, incluyendo this <.

EDITAR [diciembre de 2014]: parece haber una tendencia de editores multiplataforma y altamente extensibles recientemente. Esta podría ser una buena opción si desea algo menos que un IDE, pero más gráfico que vi / emacs y nativo en múltiples plataformas. Recomiendo mirar Sublime o Atom ; ambos funcionan en Windows / Linux / Mac y tienen excelentes comunidades de complementos y temas.

el espacio entre invocar g ++ directamente y usar una cadena de compilación de autotools es bastante estrecho. Sea bueno en autotools, que es realmente lo más parecido a un "proyecto" disponible en el mundo Linux / Open Source.

Para alguien que viene de Visual Studio, todo este asunto de la línea de comandos puede parecer arcano y desordenado. Antes de convertirte en un bash shell / vim / emacs Junkie, prueba primero algunas herramientas basadas en GUI para tener un tiempo de transición ...

  • QT 4.5 con su mini-IDE QT Creator. Este es el mejor marco, años luz antes de la competencia.
  • Eclipse (C ++): por mi experiencia con esto en Windows, me parece asombroso (esta es probablemente la mejor aplicación Java que se haya escrito)
  • KDevelop
  • Anjuta
  • Si usas Delphi, Lázaro / FreePascal es una buena alternativa.

Estoy seguro de que los longhairs se burlarán y afirmarán que vim o emacs les brinda el mejor y más rápido entorno de desarrollo, pero diferentes movimientos para diferentes personas. Alguien acostumbrado a un IDE tomará algún tiempo para cambiar o tal vez no desee cambiarlo en absoluto. Para todas sus habilidades de edición, crear aplicaciones GUI no es un trabajo para herramientas de 80x25. Se requieren años para convertirse en un experto en el lado de la línea de comandos, es más una transformación de la cosmovisión que cualquier otra cosa.

Como nota al margen de las respuestas correctas aquí ... En caso de que quiera comenzar a correr como un chico de Windows, sugeriría la nueva Qt SDK . Se sentirá como en casa :-)

Aconsejo usar SCons en lugar de Make, hace el mismo trabajo, pero es más fácil de usar y manejar de la caja cómo hacer bibliotecas dinámicas, dependencias, etc. Aquí es un ejemplo de la vida real para un programa simple. / p>

env = Environment()
env.Append(CCFLAGS='-Wall')
env.Append(CPPPATH = ['./include/'])

env.MergeFlags('-ljpeg')
env.ParseConfig("sdl-config --cflags --libs")
env.ParseConfig("curl-config --cflags --libs")
env.ParseConfig("pkg-config cairo --cflags --libs")

env.Program('rovio-pilot', Glob('./src/*.cpp'))

Como editor de texto, estoy contento con JEdit por la codificación, pero es una cuestión de gusto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top