본문 바로가기
IT/C++.C

ace 컴파일을 위해서 참조하고 있는 글들....

by 골든크랩 2024. 1. 5.
728x90
반응형

 

1. objdir/ace/config.h 에 아래 내용 추가

#ifndef __cpu_set_t_defined
#define __cpu_set_t_defined
#endif //!__cpu_set_t_defined

참고) https://stackoverflow.com/questions/51156629/compiling-error-with-ace-lib-on-slackware-14-2-64-bit


2. 


다음 단계를 따릅니다. 구성: Ubuntu에서 성공적으로 구성했습니다.
1. ACE 패키지를 다운로드합니다
. tar.gz 패키지를 다운로드하고 압축을 풉니다. 작업이 완료되면 현재 디렉터리에 ACE_wrappers 디렉터리가 생깁니다.
2. 환경 변수를 설정
하고 로그인 script.bash_profile을 다음과 같이 수정합니다.
add
PATH=$PATH:$HOME/bin;export PATH
ACE_ROOT=/home/baoxd/ACE_wrappers;export ACE_ROOT #사용자 이름 수정
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ ACE_ROOT /ace:$ACE_ROOT/lib:$ACE_ROOT/bin:/lib:/usr/lib:/usr/local/lib;export LD_LIBRARY_PATH
PATH=$PATH:$ACE_ROOT/ace:$ACE_ROOT/lib:$ACE_ROOT/bin : /usr/vacpp/bin;

내보내기 PATH를 수정한 후 source .base_profile을 실행하면 환경 변수가 설정됩니다.
3. 파일 수정

$ACE_ROOT/ace/로 이동하여 config.h를 수정
하고

#include "ace/config_linux.h" 추가

저장 후 종료

$ACE_ROOT/include/makeinclude/로 이동하여 platform_macros.GNU 생성

$ vi platform_macros.GNU

include $ACE_ROOT. /include/makeinclude/platform_linux.GNU

저장 및 종료
4. 컴파일하고
$ACE_ROOT/ace 아래에 make를 입력합니다.

컴파일 중에 문제가 발생했습니다
========================================================================================


ACE 설치 및 구성
1 -- ACE 홈페이지 및 다운로드 링크
ACE 소스 코드 및 ACE 프로그래밍 문서 다운로드: http://www.cs.wustl.edu/~schmidt/ACE.html

2 -- 컴파일 전 준비
소스 코드 패키지의 압축이 풀리면 이 디렉터리에 ACE_wrappers라는 하위 디렉터리가 생성됩니다. 이 디렉터리는 배포 패키지의 최상위 디렉터리인 $ACE_ROOT에 ACE 소스 코드, 도구 및 예제가 포함되어 있습니다. ACE 소스 코드와 헤더 파일은 $ACE_ROOT/ace 디렉터리에 있습니다.
정의: $ACE_ROOT=/usr/local/ACE/ACE_wrappers

1단계: ACE_ROOT의 환경 변수 설정
linux-m70n:vi /etc/profile
파일 끝에 다음 내용을 추가합니다:
내보내기 ACE_ROOT=/usr/local/ ACE/ACE_wrappers
import LD_LIBRARY_PATH =$ACE_ROOT:$LD_LIBRARY_PATH
저장 및 종료:
linux-m70n:source /etc/profile

2단계: $ACE_ROOT/ace 디렉터리에 config.h 파일을 생성하고 다음 콘텐츠를 추가한 후 저장하고 종료합니다.
# include “ace/config-linux.h "

3단계: $ACE_ROOT/include/makeinclude 디렉터리에 platform_macros.GNU 파일을 생성합니다. 다음 내용을 추가하고 저장하고 종료합니다. include
$(ACE_ROOT)/include/makeinclude/platform_linux.GNU 4단계 :

$ACE_ROOT 디렉터리에 build 하위 디렉터리를 생성한 다음 이 디렉터리에서 ACE를 컴파일합니다.
linux-m70n:cd $ACE_ROOT
linux-m70n:mkdir build

3 -- ACE 설치 옵션 구성 및 Makefile 생성
빌드 디렉터리에서 구성 명령을 실행하여 이 시스템에 적합한 Makefile을 생성합니다. 구성 중에 다른 옵션을 추가할 수 있습니다. 특정 옵션을 보려면 구성 –help를 사용하십시오. 자세한 지침은 ACE_wrappers 디렉터리의 ACE-INSTALL.html 파일을 참조하십시오.
linux-m70n:cd $ACE_ROOT/build
linux-m70n:../configure –prefix=/usr/local/ACE
환경이 좋으면 Makefile이 정상적으로 생성되는데 여기서 문제가 있을 경우 config를 참고하시기 바랍니다. 자세한 내용은 .log를 참조하세요. 이유.

4 -- ACE 컴파일
linux-m70n:cd $ACE_ROOT/build
linux-m70n:make

5 -- 설치
생성된 헤더 파일, 라이브러리 파일 및 매뉴얼 페이지를 지정된 디렉터리에 설치하고
linux-m70n:make install 명령을 실행합니다.

6 -- 프로그램이 ACE 동적 링크 라이브러리 파일을 올바르게 로드할 수 있도록 동적 링크 라이브러리를 설정합니다.
linux-m70n:vi /etc/ld.so.conf ld.so.conf 파일에 /usr/local/ACE/lib
줄을 추가한 후 다음 명령을 실행합니다: linux-m70n:ldconfig



7 -- 성공적인 설치 테스트
Step 1 Makefile 작성
다음 내용을 makefile로 저장한 후 /usr/local/ACE/ACE_wrappers/examples/C++NPv1 디렉터리에 저장합니다.

INC_ACE =-I/usr/로컬/ACE/포함
LIB_ACE =-L/usr/local/ACE/lib -lACE
모두:Iterative_Logging_Server Logging_Client
Iterative_Logging_Server:Iterative_Logging_Server.cpp Logging_Handler.o Logging_Server.o
g++ -Wall -o Iterative_Logging_Server Iterative_Logging_Server.cpp Logging_Server.o Logging_Handler.o -I./ $(INC_ACE) $(LIB_ACE)
Logging_Server.o:Logging_Server.cpp
g++ -Wall -c Logging_Server.cpp -I./ $(INC_ACE) $(LIB_ACE)
Logging_Client:Logging_Client.cpp Logging_Handler.o
g++ -Wall -o Logging_Client Logging_Client.cpp Logging_Handler.o -I./ $(INC_ACE) $(LIB_ACE)
Logging_Handler.o:Logging_Handler.cpp
g++ -Wall -c Logging_Handler.cpp -I./ $(INC_ACE) $(LIB_ACE)
2단계 프로그램을 컴파일하고
다음 명령을 실행합니다:
linux-m70n:make –f makefile
3단계 실행
컴파일이 통과되면 두 개의 실행 파일 Iterative_Logging_Server(서버) 및 Logging_Client(클라이언트)가 이 디렉터리에 생성됩니다. 다음 테스트를 수행하십시오.
하나의 터미널에서 명령을 실행하십시오:
linux-m70n:./Iterative_Logging_Server 12220
다른 터미널에서 명령을 실행하십시오:
linux-m70n:./Logging_Client
그런 다음 터미널에 내용을 입력하고 Enter를 누르십시오.
클라이언트 터미널에 입력된 내용을 포함하는 login_server.log라는 파일이 이 디렉터리에 생성됩니다.

8 -- 본문 부록
ACE 설치 중 발생한 문제:

구성:50033: 오류: 크기(wchar_t)를 계산할 수 없습니다. 77 자세한 내용은 'config.log'를 참조하세요.
구성 오류에 따라 config.log를 확인하여 원인을 찾고, wchar_t를 검색하여 다음 정보를 찾습니다.

구성:49639: wchar_t 확인 중
구성:49693: 결과: 예
구성:49696: wchar_t의 크기 확인
구성:50015: gcc -o conftest -g -O2 -pthread -pipe conftest.cc >&5
/tmp/cc9zSuj4.o(.eh_frame+0x11): `__gxx_personality_v0'에 대한 정의되지 않은 참조
Collect2: ld가 종료 상태 1개를 반환했습니다.
구성:50018: $? = 1
구성: 프로그램이 상태 1로 종료되었습니다.
구성: 실패한 프로그램:
출력 로그에 따르면 sizeof(wchar_t)를 감지하는 동안 오류가 발생했습니다. 구체적인 이유는 "`__gxx_personality_v0`에 대한 정의되지 않은 참조"입니다. 이 오류의 일반적인 이유는 다음과 같습니다. "__gxx_personality_v0" 오류 메시지는 gcc를 사용하여 C++ 코드를 컴파일하려고 함을 나타냅니다. 그러나 "구성: 프로그램 실패:" 이후 출력되는 감지 코드는 C++가 아니라 순수 C 코드입니다. 그런데 구성은 이 코드를 conftest.cc로 저장하는데, 이는 g++로 컴파일해야 한다는 뜻인데, 여기서 컴파일하기 위해 왜 gcc를 선택했는지 모르겠습니다. 이것이 문제의 근원입니다.
echo $CC를 사용하고 echo $CXX를 사용하여 환경 변수에서 CC 및 CXX가 gcc로 정의되어 있는 것을 확인하므로 이를 수정하겠습니다.
vi /etc/profile
CC 및 CXX 앞에 #을 추가하거나
소스 /etc를 직접 삭제합니다. 프로필

수정이 완료되면 재구성하면 끝입니다!

728x90
반응형

댓글