Compilando (e instalando) plug-in do Gimp para Linux, Windows e, no Linux, para Windows

20nov07

Estou desenvolvendo um plug-in para GIMP (postarei em breve). Uso o GIMP como editor de imagens porque é bom, gratuito, código-aberto e multi-plataforma.

Aqui relato como instalar um plugin GIMP em dois SO’s: Linux e Windows. Também mostro como compilar e/ou instalar um plugin em cada um dos SO’s. Por fim, mostro como fazer a compilação cruzada (cross-compilation) para gerar plug-ins para Windows a partir do Linux.

Instalação

A instalação do plug-in pode ser feita tanta a partir do seu código-fonte quanto do binário (já compilado).

  • No binário, é simples: coloque o arquivo na pasta correta. Existem duas possibilidades: a pasta de plug-ins comum a todos os usuários e a do seu usuário.

    Para o meu Linux (debian-etch para AMD64 com gimp 2.2), a pasta de administrador é /usr/lib/gimp/2.0/plug-ins/. A de usuário é /home/USUARIO/.gimp-2.2/plug-ins .

    Para windows XP, seria algo como C:\Arquivos de Programas\GIMP-2.0\lib\gimp\2.0\plug-ins para administrador, e C:\Documents and Settings\USUARIO\.gimp-2.4\plug-ins .

  • No caso de se ter o código-fonte, é preciso compilar. Para isso, é preciso ter as bibliotecas exigidas (e seus devidos cabeçalhos). As bibliotecas básicas são: gimp, glib, gtk+, pango, cairo, atk e talvez gettext.

    No caso do Linux, obtenha e instale as versões -dev dessas bibliotecas, por exemplo glib2.0-dev.

    No caso Windows, vá à página do mantenedor do GIMP versão Windows e obtenha todas as bibliotecas mencionadas (versão -dev), descompacte-as e utilize-as. Você vai precisar de um compilador para isso, claro. Recomendo o fornecido pelo MingW.

O GIMP fornece uma ferramenta perfeita para isso (compilação e/ou instalação de plug-ins): o gimptool. Ainda se faz necessário ter as bibliotecas, mas ele já chama o compilador com os argumentos certos. Essa ferramenta vêm no pacote gimp-dev (tanto no Linux, quanto no Windows).

Para instalar no modo usuário:
$ gimptool --install-bin NOMEARQUIVOPLUGIN

Para instalar no modo administrador:
$ gimptool --install-admin-bin NOMEARQUIVOPLUGIN

Para compilar e instalar no modo usuário:
$ gimptool --install NOMEARQUIVOPLUGIN_FONTE

Para compilar e instalar no modo administrador:
$ gimptool --install-admin NOMEARQUIVOPLUGIN_FONTE

Compilação

Já mencionado antes, é preciso de ter as versões de desenvolvimento de certas bibliotecas (novamente: gimp, glib, gtk+, pango, cairo, atk e talvez gettext).

Acima, mencionei como compilar e instalar ao mesmo tempo. Aqui, mostro como apenas compilar:
$ gimptool --build NOMEARQUIVOPLUGIN_FONTE

(A partir daqui, me refiro somente ao Linux)

Isso faz usar o seguindo comando de compilação:
$ cc -g -Wall -O2 -I/usr/include/gimp-2.0 -DPNG_NO_MMX_CODE -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -o /home/rodolfo/.gimp-2.2/plug-ins/megadrive_exporter megadrive_exporter.c -L/usr/lib -lgimpui-2.0 -lgimpwidgets-2.0 -lgimp-2.0 -lgimpcolor-2.0 -lgimpmath-2.0 -lgimpbase-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

Obviamente, nem tudo que está aí é sempre necessário, mas é o que sempre a ferramenta vai chamar.

Compilação cruzada

Aqui descrevo como compilar no Linux para Windows.

Primeiramente, obtenha (ou gere a partir do código-fonte) o MingW (compilador C, binutils e runtime). O Debian me fornece já tais pacotes: mingw32, mingw32-binutils e mingw32-runtime. Todos são necessários.

Com esse compilador em mãos, basta realizar o comando análogo ao utilizado pelo gimptool. Entretanto, é óbvio que se deve usar as bibliotecas e cabeçalhos da versão compilada para Windows. São elas, mais uma vez, gimp, glib, gtk+, pango, cairo, atk e talvez gettext. No mínimo.

Descompacte todos os arquivos para uma mesma pasta. No meu caso, seguindo o meu exemplo para o processador 68000, utilizei a pasta /opt/win32. Vai gerar uma árvore de arquivos com pastas bin, lib, include, etc.

Agora chame o compilador do mingw com os argumentos usados pelo gimptool ligeiramente modificados.

$ i586-mingw32msvc-cc -g -Wall -O2 -DPNG_NO_MMX_CODE -I$WIN32/include/gimp-2.0 -I$WIN32/lib/gtk-2.0/include -I$WIN32/include/atk-1.0 -I$WIN32/include/glib-2.0 -I$WIN32/lib/glib-2.0/include -I$WIN32/include/gtk-2.0 -I$WIN32/include/cairo -I$WIN32/include/pango-1.0 -L$WIN32/lib MEUPLUGIN.c -o MEUPLUGIN.exe -lgimpui-2.0 -lgimpwidgets-2.0 -lgimp-2.0 -lglib-2.0 -lgtk-win32-2.0 -lgobject-2.0 -lgmodule-2.0 -lgdk-win32-2.0

  •  i586-mingw32msvc-cc é o meu compilador C do MingW;
  • $WIN32 é minha variável de ambiente para a pasta /opt/win32

Observe que onde era /usr substituí por /opt/win32, e que, quando o nome da biblioteca continha X11, mudei-a para win32. As bibliotecas referentes ao sistema gráfico X11 não são necessárias no Windows 😉

Dando problema na ligação, é preciso descobrir qual biblioteca está faltando.
Não coloquei todas as possiveis no comando acima, apenas as que precisei no meu plugin.
Quem quiser, pode completar com todas (exceto as referentes ao X) do comando chamado pelo gimptool para compilar.

Qualquer dúvida, só comentar.

Anúncios


5 Responses to “Compilando (e instalando) plug-in do Gimp para Linux, Windows e, no Linux, para Windows”

  1. Como anda o seu plug-in ?!
    Descobri os plug-ins do GIMP esses dias, mas até agora só escrevi plug-ins em python !
    Eu queria saber se plug-ins escritos em C são rápidos, se permitem maior manipulação (trabalhar pixel a pixel por exemplo). O que eu consigo em C que não conseguiria em python ?
    Sou programador apaixonado por C/C++, mas queria confirmar estas dúvidas !

  2. 2 aventuranolinux

    Bom, suponho que, pelo fato de C ser uma linguagem compilável, sempre será mais rápido que uma interpretada (se bem escrito, óbvio). Contudo, se esse “mais rápido” é considerável, eu não sei… Dependerá do seu computador.
    Não mexi com plugins em Python, mas sei que dá para manipular pixel-a-pixel em C, sim: tanto que dá para carregar um novo formato de arquivo 😉 Acredito que no Python também seja possível.
    Ah! Meu plug-in va bem, obrigado 😉

  3. 3 Linux User

    Num é que a compilação cruzada funciona mesmo !
    Dá um trabalho que não é moleza, mas funciona.

    Eu só queria poder compilar o código da API do GIMP 2.6, mas a do 2.4 tá funcionando. Compilar ou baixar… sabe como/onde ?!

  4. Esse código também serve para a instalação do GEGL? O meu computador é windows 7.

    • 5 aventuranolinux

      Sinceramente, não sei. Não sei se GEGL é plugin.
      Só uso Linux mesmo. Windows só no trabalho, quando não uso meu notebook.

      Além disso, no meu Gimp sempre teve GEGL disponível.


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: