Compilando uma Extensão Definida pelo Usuário em C

Antes de começar

Você deve ter uma extensão definida pelo usuário escrita em C. Pode ser um dos nós de amostra fornecidos descritos em Arquivos de Nós de Amostra, o analisador de amostra descrito em Arquivos de Analisadores de Amostra ou um nó ou um analisador criado por você mesmo utilizando as instruções de Criando um Nó de Processamento de Mensagem em C, Criando um Nó de Entrada em C ou de Criando um Analisador em C. O nome do nó plug-in deve ter o formato <nome_do_nó>.lil.

Esta seção fornece informações sobre como compilar extensões definidas pelo usuário para todas as plataformas suportadas.

Os nomes de arquivos utilizados nestas instruções são os das amostras fornecidas. Se você estiver compilando suas próprias extensões definidas pelo usuário, deve substituir esses nomes de arquivos pelos de seus próprios nomes de arquivos.

Pré-requisitos

Antes de tentar compilar sua extensão definida pelo usuário, certifique-se de ter um compilador apropriado suportado pelo sistema operacional. Exemplos de compiladores apropriados são:

Para , o Microsoft Visual Studio Versão 6.0 (Service Pack 5)

Para , o VisualAge C++ para AIX Versão 5.0.2

Para , o HP ANSI C 03.37

Para , Versão 2.95.3

Para , o SparcCompiler SC6.2

Para , Versão 1.3 ou Versão 1.4

Arquivos de Cabeçalho

As interfaces em C são definidas pelos seguintes arquivos de cabeçalho:
BipCni.h
Nós de processamento de mensagem
BipCpi.h
Analisadores de mensagem
BipCci.h
Interfaces comuns a nós e analisadores
BipCos.h
Definições específicas de plataforma

As bibliotecas de extensões definidas pelo usuário existentes do cliente ou fornecidas por terceiros executarão em um intermediário do sem modificação ou recompilação, porém é preciso criá-las manualmente no .

Compilação

Compilar a origem para a extensão definida pelo usuário em cada uma das plataformas suportadas cria o arquivo LIL (Loadable Implementation Library) de que o intermediário necessita para implementar a extensão definida pelo usuário.

Mova para o diretório onde o código da extensão definido pelo usuário está localizado. Por exemplo:Início da mudança
  cd
\sample\extensions\nodes\
()
 
  cd
/sample/extensions/nodes
( platforms)
Fim da mudança

Compilando no

Compile o nó definido pelo usuário no (supondo o compilador C/C++ Microsoft de 32 bits, disponível no Microsoft Visual Studio C++ Versão 6.0), utilizando o comando:
  cl /VERBOSE /LD /MD /Zi /I..\plugin /I..\..\include\plugin
     SwitchNode.c BipSampPluginUtil.c Common.c NodeFactory.c TransformNode.c
     -link /DLL ..\..\lib\imbdfplg.lib
     /OUT:SwitchNode.lil

Compilando no

Compile e vincule o nó definido pelo usuário no da seguinte forma, utilizando um compilador C suportado:
xlc_r -I <>/include      -I <>/include/plugin      -c SwitchNode.c
	    -o <outputdir>/SwitchNode.o

xlc_r -I <>/include      -I <>/include/plugin      -c BipSampPluginUtil.c
	    -o <outputdir>/BipSampPluginUtil.o

xlc_r -bM:SRE
      -bexpall
      -bnoentry
      -o SwitchNode.lil <outputdir>/SwitchNode.o
         <outputdir>/BipSampPluginUtil.o
      -L <>/lib      -l imbdfplg

chmod a+r SwitchNode.lil
Início da mudança

Compilando no

Compile e vincule o nó definido pelo usuário no da seguinte forma, utilizando um compilador C suportado:
cc +z \
-I. \
   -I<>/include \   -I<>/include/plugin \   -c BipSampPluginUtil.c \
   -o <output_dir>/BipSampPluginUtil.o

cc +z \
-I. \
   -I<>/include \   -I<>/include/plugin \   
-c Common.c \
   -o <output_dir>/Common.o

cc +z \
-I. \
   -I<>/include \   -I<>/include/plugin \   
-c NodeFactory.c \
   -o <output_dir>/NodeFactory.o

cc +z \
-I. \
   -I<>/include \   -I<>/include/plugin \   -c SwitchNode.c \
   -o <output_dir>/SwitchNode.o

cc +z \
-I. \
   -I<>/include \   -I<>/include/plugin \   -c TransformNode.c \
   -o <output_dir>/TransformNode.o


ld -b \
   -o <output_dir>/SwitchNode.lil \
   <output_dir>/BipSampPluginUtil.o \
   <output_dir>/Common.o \
   <output_dir>/NodeFactory.o \
   <output_dir>/SwitchNode.o \
   <output_dir>/TransformNode.o \
   -L <>/lib \
   -L <java_home>/jre/lib/PA_RISC2.0 \
   -L <java_home>/jre/lib/PA_RISC2.0/server \
   -l imbdfplg

chmod a+r <output_dir>/SwitchNode.lil
Fim da mudança
Início da mudança

Compilando no

Compile e vincule o nó definido pelo usuário no da seguinte forma, utilizando um compilador C suportado. Observe que as linhas foram divididas para melhorar a leitura. Digite cada comando como uma única linha de entrada.

/usr/bin/gcc -c -fpic -MD -trigraphs  -I. -I/opt/mqsi/include
    -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU
    -D_GNU_SOURCE TransformNode.c
/usr/bin/gcc -c -fpic -MD -trigraphs  -I. -I/opt/mqsi/include
    -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU
    -D_GNU_SOURCE SwitchNode.c /usr/bin/gcc -c -fpic -MD -trigraphs  -I. -I/opt/mqsi/include
    -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU
    -D_GNU_SOURCE BipSampPluginUtil.c
/usr/bin/gcc -c -fpic -MD -trigraphs  -I. -I/opt/mqsi/include
    -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU
    -D_GNU_SOURCE Common.c
/usr/bin/gcc -c -fpic -MD -trigraphs  -I. -I/opt/mqsi/include
    -I/opt/mqsi/include/plugin -DLINUX -D__USE_GNU
    -D_GNU_SOURCE NodeFactory.c
/usr/bin/gcc -o samples.lil
		TransformNode.o SwitchNode.o BipSampPluginUtil.o Common.o NodeFactory.o
	  -shared -lc -lnsl -ldl -L/opt/mqsi/lib -limbdfplg 
Esses comandos criam o arquivo samples.lil que fornece objetos TransformNode e SwitchNode. Se ocorrer uma exceção no nó, ela não será manipulada corretamente e o intermediário abortará e será reiniciado.
Fim da mudança

Compilando no

Compile e vincule o nó definido pelo usuário no da seguinte forma, utilizando um compilador C suportado:
cc -mt \
	-I. \
   -I<>/include \   -I<>/include/plugin \   -c SwitchNode.c \
   -o <output_dir>/SwitchNode.o

cc -mt \
	-I. \
   -I<>/include \   -I<>/include/plugin \   -c BipSampPluginUtil.c \
   -o <output_dir>/BipSampPluginUtil.o

cc -G \
   -o <output_dir>/SwitchNode.lil \
   		<output_dir>/SwitchNode.o \
   		<output_dir>/BipSampPluginUtil.o \
   -L <>/lib /   -l imbdfplg

chmod a+r <output_dir>/SwitchNode.lil

Compilando no

Força seu link a utilizar um pré-vinculador, definindo a variável _CC_STEPS como -1, da seguinte forma:
export _CC_STEPS=-1
Como alternativa você pode incluir estas duas linhas a seu arquivo pronto para exportá-lo, da seguinte maneira:
_CC_STEPS=-1
.EXPORT : _CC_STEPS

Compile e vincule o nó definido pelo usuário no da seguinte forma, utilizando um compilador C suportado:

cc -c \
 -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\) \
 -W0,LIST\(${output_dir}/SwitchNode.lst\) \
 -I./-I${install_dir}/include -I${install_dir}/include/plugin  \
 -I${install_dir}/sample/include \
 -I${install_dir}/sample/plugin \
 -o ${output_dir}/SwitchNode.o \
 ${install_dir}/sample/plugin/SwitchNode.c
cc -c \
 -Wc,DLL -g -W0,long,langlvl\(extended\),EXPORTALL,TARGET\(OSV2R8\) \
 -W0,LIST\(${output_dir}/BipSampPluginUtil.lst\) \
 -I./-I${install_dir}/include -I${install_dir}/include/plugin  \
 -I${install_dir}/sample/include \
 -I${install_dir}/sample/plugin \
 -o ${output_dir}/BipSampPluginUtil.o \
 ${install_dir}/sample/plugin/BipSampPluginUtil.c
cc \
 -Wl,DLL -g  -Wl,p,map -Wl,LIST=ALL,MAP,XREF,REUS=RENT
-o ${output_dir}/SwitchNode.lil \
${output_dir}/SwitchNode.o ${output_dir}/BipSampPluginUtil.o
${install_dir}/lib/libimbdfplg.x
chmod a+r {output_dir}/SwitchNode.lil
Nota: -g torna-se -2 para compilações otimizadas.

Conceitos relacionados
Extensões Definidas pelo Usuário

Tarefas relacionadas
Desenvolvendo Extensões Definidas pelo Usuário
Criando a Representação da Interface com o Usuário de um Nó Definido pelo Usuário no
Testando um Nó Definido pelo Usuário
Distribuindo um Nó Definido pelo Usuário

Referências relacionadas
Extensões Definidas pelo Usuário