Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dórian Conde Langbeck

Naum sei explicar muito bem [OLHEM]

Recommended Posts

Boa noite pessoal...

Eu sou programador em PHP, naum entendo nadinha de C/C++...

 

eu estou estudando um novo modulo de PHP (bcompiler), e preciso de um arquivo executavel, o qual eu naum sei gerar.

tenho todos os arquivos .c e .h q são necessarios pra "criar" o executavel, eu simplesmente naum tenho ideia do que fazer...

 

queria q alguem me disponibilizasse o seu MSN pra que possa me ajudar nisso.

 

Desde já, muito obrigado pela ajuda!

 

PS: Eu naum estou interessado em aprender a compilar, eu simplesmente preciso de alguem q compile eles de maneira correta pra mim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ se eu naum sei descrever a minha duvida...

e pelo menos, em PHP, tem um sub-topico pra fazer pedidos...

 

quem puder me ajudar, plz... MSN: ken_langbeck@yahoo.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

fica realmente dificil te ajudar sem saber a duvida =//

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu preciso que alguem compile uns aquirvos pra mim...

eu mandaria o fonte tudinho, explicaria +/- as infos, e essa pessoa iria compilar pra mim e me entregar prontinho

 

simples... haushuasahusha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um modulo, relativamente novo em PHP chamado bcompiler. Ele pode escrever codigos PHP em bytecodes, e ler os mesmos. Sendo que, os bytecodes tem um tempo de execução menor. Ele tbm pode inserir estes bycodes dentro de um arquivo EXE.

Trecho da descrição do bcompiler: Pagina original

Para criar arquivos do tipo EXE, bcompiler tem que ser usado com um arquivo de SAPI

modificado ou uma versão do PHP que tenha sido compilada como uma biblioteca compartilhada. Nesse

cenário, bcompiler ler o bytecode compactador do fim do arquivo

executável.

 

bcompiler pode aumentar performance em volta de 30% quando usado com bytecodes

não-compactados apenas. Mas lembre-se que bytecode não-compactado pode ser até

5 vezes maior que o código-fonte original. Usar compactação de bytecode

pode evitar gasto de espaço, mas descompactar requer muito mais

tempo do que avaliar um fonte. bcompiler também não faz nenhuma otimização

de bytecode, isso pode ser acrescentado no futuro...

No manual PHP, tem uma area que tem a seguinte explicação sobre a gravação de arquivos: Pagina original

Um arquivo EXE (ou auto executável) consiste de 3 partes,

 

O núcleo (código executável, ex.: um programa C compilado) que carrega o interpretador

do PHP, a extensão do bcompiler, is Bytecodes guardados e inicia uma chamada

para a função especificada (ex.: main) ou método da classe (ex.: main::main)

Os Bytecodes (descomprimidos apenas momentaneamente)

O rodapé do exe do bcompile

 

Para obter um núcleo adequado, você pode compilar php_embed-based stub phpe.c

localizado no diretório examples/embed no CVS do bcompiler.

Aqui esta um exemplo de como seria a criação de um arquivo executavel em PHP:

<?php
		 /* Gerando um arquivo executavel de exemplo (example.exe) */
		 $fh = fopen("example.exe", "w");
		 
		 /* phpe.exe é como so fosse o nucleo compilado do qual
		 eu estou precisando, e o qual contem todo o codigo para interpretar
		 os bytecodes inseridos à frente.
		 Basicamente este trecho do codigo faz uma copia de todo o conteudo
		 existente em phpe.exe para o arquivo example.exe */
		 $size = filesize("phpe.exe");
		 $fr = fopen("phpe.exe", "r");
		 fwrite($fh, fread($fr, $size), $size);
		 $startpos = ftell($fh);
		 
		 /*  Nessa segunda etapa, são gravados os bytecodes, para serem "interpretados" (eu acho)
		 pelo nucleo. */
		 bcompiler_write_header($fh);
		 bcompiler_write_class($fh, "myclass");
		 bcompiler_write_function($fh, "main");
		 bcompiler_write_footer($fh);
		 
		 /* Na terceira etapa é que o EXE novo é "finalizado" */
		 bcompiler_write_exe_footer($fh, $startpos);
		 
		 /* Depois o arquivo de saida é fechado */
		 fclose($fh);
		 ?>

Como voces podem imaginar, o problema esta em conseguir gerar o promeiro arquivo phpe.exe. Este é o fonte do arquivo phpe.c

#include <php_embed.h>
	 
	  
	 int main(int argc, char **argv) {
		  
		 char *my_filename = NULL;
		 char *code = " $s =((PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : '') . 'bcompiler.' .PHP_SHLIB_SUFFIX; "
			 "dl($s); "
			 "if (!extension_loaded('bcompiler')) { echo 'bcompiler not loaded - dll/so should be in same directory as exe'; exit; }"
			 "bcompiler_load_exe($_SERVER['argv'][0]);"
			 "if (!class_exists('main')) { echo 'main class does not exist';   }"
			 "main::main();";
		 
		 /* this doesnt work as php.gtk needs an ini option set that doesnt want to work any other way.. */
		 /* php_embed_module.php_ini_ignore = 1; */
		 
	 
		 PHP_EMBED_START_BLOCK(argc,argv);
		  
		 
			 my_filename = strdup(argv[0]);
		 php_dirname(my_filename, strlen(my_filename));
		  
		 zend_alter_ini_entry("extension_dir", 14, my_filename, strlen(my_filename), PHP_INI_ALL, PHP_INI_STAGE_ACTIVATE);
		 zend_alter_ini_entry("error_reporting", 16, "1024", 4, PHP_INI_ALL, PHP_INI_STAGE_ACTIVATE);
		 
		 
		 zend_eval_string(code, NULL, argv[0] TSRMLS_CC);
		  
		 
		 
		 PHP_EMBED_END_BLOCK();
		 return 0;
	 }

Esse codigo esta dentro do arquivo tgz do bcompiler (baixar), dentro da pasta bcompiler-0.8\examples\embed, juntamente com uns arquivos Makefile e Makefile.win.

Ja tentei usar o comando make do Linux na distro Debian, Ubuntu, Fedora e Slackware. Todos eles sem sucesso, mostrando um monte de mensagens de saida, aparentemente de erros por naum conseguir encontrar o arquivo php_embed.h.

 

Este arquivo (php_embed.h) esta dentro do pacote dos fontes PHP (baixar), na pasta php-5.2.5\sapi\embed.

Aparentemente, tudo q é necessário para gerar o arquivo phpe.exe estao dentro desses dois links que eu deixei...

 

Esses outros links explicam basicamente qual deve ser o funcionamento.

http://www.srcdoc.com/php_5.0.4/php__embed_8h.html

esse ensina a gerar esse arquivo usando o MS Visual Studio (onde por curiosudade eu fui baixar a versao 2008 e tem "apenas" 3.4Gb) ^^

http://wildphp.free.fr/wiki/doku.php?id=ho...executable_file

 

Brigação desde já pela ajuda ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.