윈도우 환경에서 개발된 C++을 컨버전 하려고합니다.
글쓴이: sinta / 작성시간: 월, 2008/08/18 - 5:31오후
안녕하세요
리눅스를 접한지 2일하고도 한나절이 지난 새내기입니다.;
이번에 하려고 하는(이라고 쓰고 해야하는 으로 읽는) 일은
윈도우 환경에서 개발된 프로세스를 리눅스 환경에서 동작되도록 컨버전(?)을 하는 것입니다.
여차저차 찾아서 현재 환경구성까지는 해놓은 상태입니다.
환경구성은
기존 : Windows2003 + MSSQL2000 (2005) + Visual Studio6.0
현재 : CentOS 4.6 + Oracle 10g //// (땡? gcc 컴파일러까지는 설치했습니다.)
입니다.
프로세스는 DB에서 데이터를 읽어와 연산을 한 후 다시 DB에 새로운 데이터를 삽입합니다.
DB를 MSSQL에서 Oracle로 이사하는건 어디선가 본적이 있어서 아 뭔가를 해야겠구나 라는게 살짝 느껴지지만
문제는.. 소스가...
리눅스를 다뤄본적은 학교에서 수업에서 사용했던 간단한 명령어정도만 아는 정도입니다.
대략적인 일의 진행순서라거나. 어떻게 흘러가야 할지 조언을 구하고자 글을 썻습니다.
읽어주셔서 감사합니다. =)
Forums:
상당히 골치아픈
상당히 골치아픈 일이 되겠군요.
MSSQL 에 들어간 DATA 만 옮기면 되는 일이면 간단하겠지만 PL/SQL ( PROCEDURE ) 이나 VIEW 등등 이나 설정값까지 옮기려면 정말 어마어마한 일이 될 공산이 큽니다.
거기에 vs 6.0 으로 작성된 코드가 그냥 gcc 에서 컴파일 되리라고 기대하기도 힘들지도 모릅니다. ( 절대적으로 불가능하지요 -_- )
vs6.0 은 template 표준이 제대로 결정되기 전이라 만약 template 을 소스코드에 남발했거나 windows 에서만 존재하는 헤더파일에 의존적인 코드를
작성했다면 더더욱 큰 일이 될 것입니다.
게다가 ODBC 면 그나마 다행이지만 ADO 면 더더욱 암울한 일을 겪으실 수 있습니다. 또한 Windows 쪽의 VAR type 의 변수들은 union 꽁수로 흉내내야할
확률이 매우 높습니다.
우선 제 경험상 ( 전 지금 처럼 프로그램을 porting 해본 경험은 없지만 양쪽의 APP 를 각각 작성한 경험은 있습니다. )
C++ 각 파일을 모두 옮기고 vcproj 파일에 들어있는 각종 설정값을 면밀히 살펴서 컴파일 옵션을 주십시오. ( Makefile 을 작성하셔야 할 것입니다. )
include 된 헤더들을 모두 살펴서 windows 에 종속적인 녀석이있나 살펴보시고 있다면 어떻게 그 함수를 linux 로 porting 할 것인가 고민해보십시오.
MFC 같은것을 사용했다면 거의 UI 는 새로 짜셔야 할 확률이 높습니다. ( GTK , QT .. 등등 여러가지 대안이 있습니다. )
그냥 평범한 CUI APP 라 하더라도 getchar() 등을 사용했다면 상당히 지저분한 porting 이 될 수 있습니다. 이경우 ncurse lib 을 고려하십시오.
ADO 의 경우 Data type 을 면밀히 살펴보십시오. 각 Attibute 나 value 를 어떻게 얻어오나 살펴보시고 Oracle 의 Data를 C++에서 가져오는 예제와
비교하셔서 어떤걸 작성해야하나 살펴보십시오.
위의 내용을 다 고민해 보신뒤 대략 일의 분량이 파악이 되셨다면,
알고리즘과 프로그램의 프로세스를 전부 파악하여서 다시 짜는게 빠른가 , 포팅하는게 빠른가 심각하게 고민해보십시오.
ㅠ_ㅠ 암울한 말씀만 드려서 죄송합니다...
Neogeo - Future is Now.
Neogeo - Future is Now.
와 ^^ 깜깜했던 앞이..
아직 보이지 않지만...
감사한 조언에 밝아졌을거라고 믿고 싶습니다. ^^;
읽기만 해도 보통일이 아니구나란게 느껴집니다 ㅠ
그래도 다행인건 ODBC를 사용했다는것이고
헤더들 대부분이 작성되었다는건 희망적입니다.!
허술하지만 조금은 UI가 있다는것과...
C처럼(?) 보였지만 MFC헤더가 포함되어 있다는것만 뺀다면....
아무것도 손을 못대고 있었는데 neogeo님의 감사한 댓글 덕분에
시작할 수 있게 되었습니다.! (고민부터 :D )
열심히 고민해야겠군요 ㅠ_ㅠ
감사합니다.
일단, VS -> GCC의
일단, VS -> GCC의 문제는 나중으로 미뤄 놓고...
MSSQL -> Oracle의 migration 문제부터 확실히 해결을 하셔야 할 듯 하네요.
위에서, 겜기가 말한것과 같이 T-SQL로 작성된 프로시져가 많이 있다면, PL/SQL로의 포팅이 먼저가 될 것입니다.
View는 크게 문제가 안될것 같구요. 대략적인 SQL로 그다지 문제가 될게 없습니다.
일단, MSSQL to Oralce Migrarion guide같은 것을 구해서, 중점 체크가 될 만한것들을 먼저 체크하시고, DB Migration 전략을 세운뒤, 그게 가능하다면 그때 App의 포팅문제를 검토하시는것이 좋을듯하네요.
App 포팅의 경우, 일단, DB 핸들링의 문제는 여러가지 방법이 많이 있고, 자료가 많이 있으니 마이그레이션만 잘 해결되면, 큰 문제는 없을것 같습니다.
실제적인 포팅 부분에서의 문제는 프로그램의 성격의 따라 많이 차이가 나겠지만, GUI라면, UI단은 완전히 새로 작성하다 시피 해야 할것이구요. 서버단이라면, UI는 문제가 없을 수 있겠네요.
그리고, C라면 조금은 덜 할테지만, C++이라면, 위에서 언급한 Template과 각종 VC++의 특성들이 문제가 되어, 꽤 괴로운 작업이 될 확률이 상당히 높다고 보여지네요.
時日也放聲大哭
時日也放聲大哭
윗분들이 잘 이야기
윗분들이 잘 이야기 해주셨지만 추가로 제 생각을 이야기 드리면
두개의 별개의 일로 생각하셔서.
1. DB 마이그레이션
2. OS 변경
으로 작업 하시면 좋을 것 같습니다.
일의 크기는 자료가 부족한 상황에서 이야기 드리긴 뭐하지만
1번이 더 큰일일것 같구요.
윈도우 환경에 익숙하시다면 일단 윈도우에서 1번 작업을 해보는것도 좋겠네요.
2번은 소스가 있는 경우라면 wine 같은 (약간 꼼수지만 ) 것을 사용해서 의외로 간단히 해결될 가능성도 있다고 생각합니다.
도움이 되셨길 ..
감사합니다. ^^;
와. 정말 감사합니다 :D
아직 여기저기 돌아다니면서 도움이 되겠다 싶은 내용은 싹싹
모으고 있는중입니다 ^^;
그래서 오늘! DB 이사를 하려고 합니다 ^^;
하루종일 구글링와 네이버에서 살겠네요
도움주셔서 모두 고맙습니다.
날씨도 선선해서 좋은데 다들 좋은 하루 되세요!
음 제 생각에도
1. DB 마이그레이션
2. OS 변경
1번 문제만 해결 된다면 (사실 그리 어렵게 생각할 것도 없을것 같지만
작업을 하다보면 그리 만만한건 아닐 수도 있죠!!)
2번 문제는 동작 구현쪽은 그리 어려울것 같지 않습니다.
1번 문제도 해 보신 분들이 꽤 있을것 같고요 ^.^
성공하시기를...
---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------
---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------
댓글 달기