ARM에서 c++를 사용해서 개발경험이 있으신 분들께 질문 드립니다.

swunk의 이미지

초짜 임베디드 프로그래머 입니다.

arm9/linux 환경에서 수행되는 프로젝트에 참여하게 되었습니다.
c++을 사용하려고 합니다.

먼저 보드뜨고 OS 포팅되면 제가 해당 환경을 받아서 개발을 시작하게 되어 있습니다.

해당 개발환경을 받을때 어떤것들을 확인해 보면 될까요?
예를 들어서 compilier 라든가 무슨 무슨 라이브러리라 든가...

혹 arm9등에서 c++로 개발을 하시다가 문제점등을 만났던 분들이 계시다면 조언 주시면 고맙겠습니다.
arm용 c++컴파일러는 문제가 없나요 ?

답변 부탁드립니다.

kornet의 이미지

이젠 기억나는 게 거의 없지만.. 하나 생각나는건요..

for (int i = 0; i < MAX; i++) {

이렇게 해줬을 때.. Arm Compiler 에서랑 Visual C++ 에서랑 해석이 다르게 된다는 거..

하나는 블럭 안에서 i 가 선언된 것으로, 다른 하나는 블럭 밖에서 선언된 것으로..

이런 식으로 다른 부분이 종종 있었어요.. 가물가물~

ydongyol의 이미지

잘 아시겠지만. cros 컴파일러같은 개발환경을 잘 구성하셔야 됩니다.
라이브러리도 차근차근 본인이 직접 컴파일 하시구요.
뭘 만드시는지는 모르겠지만 GUI 선정 같은것도 중요하구요.

--
Linux강국 KOREA
http://ydongyol.tistory.com/

thyoo의 이미지

아래 싸이트 참고하세요.

http://dsl.ee.unsw.edu.au/dsl-cdrom/README.html
___________________________________
Less is More (Robert Browning)

___________________________________
Less is More (Robert Browning)

sleepbysleep의 이미지

순수한 C++을 쓰시는데는 문제가 없습니다.
다른 라이브러리 특히 PC상에서 늘 써왔던 라이브러리들이 없는 경우가 많고,
라이브러리를 크로스 컴파일하는 과정또한 그리 간단하지 않습니다.

swunk의 이미지

잘몰라서 그럽니다만...
ARM9용 cc cross compiler가 잘 동작한다고 하면 타겟 환경에서 C++로 개발을 할때 STL을 사용하는데는 문제가 없나요 ?
STL도 다른 라이브러리 처럼 따로 컴파일을 해서 사용해야 하는지 궁금합니다. STL은 기본적으로 포함되어 있을것 같아서 여쭤봅니다.

thyoo의 이미지

gcc를 compile해본 지가 오래돼서 가물가물합니다만
libstdc++ 컴파일 여부 지정이 configure option에 있었던 것 같군요.

일반적으로 Template Library를 쓰면 Code Bloating이 나서
바이너리가 엄청 커지죠. 그래서 잘 안씁니다.

STL없이도 C++의 유용한
- 클래쓰/상속/가상함수 : C처럼 핸들 끌고 다닐 필요없음.
- Operator Overloading : 이거 맛들인 사람은 C 귀찮아서 못짭니다.
- ctor/dtor
는 그대로 사용할 수 있구요.
자동 변수도 C하고 다르게 아무데나 선언해도 되니까 많이 편합니다.
namespace도 빼 놓을 수 없군요. 그 덕분에 id를 짧게 만들어도 됩니다.
(극단적인 예로, 영어 일어 섞어서 40자나 되는 enum 값을 본 적이 있읍니다.
물론 그중에 앞의 30자는 prefix였지요.)
Performance보다는 Size(Memory=비용)을 중시하는 경향이 있어서
Template이나 inline 함수는 적절하게 사용해야 합니다.

가끔 STL이 그리울 때가 있는데 그때마다 필요한 Container 하나씩 맨들어 쓰면 됩니다.

제경우 제일 많이 쓰는
vector는 realloc()으로 쉽게 구현하고
그다음 많이 쓰는
map은 red-black tree로 대충 맨들어 씁니다.
___________________________________
Less is More (Robert Browning)

___________________________________
Less is More (Robert Browning)

익명사용자의 이미지

vector class를 사용할 때

vector<string> v;
 
v.push_back("foo");
v.push_back("voo");
 
blahblah
 
cout << v.at(0) << endl; // error
cout << v[0] << endl; //correct!

위 처럼 at함수로 element를 꺼내올때 문제가 생기더군요.

늦은 답글이지만 참고되셨으면 합니다. ^^

suh1978의 이미지

열정은 남자의 미래다! - suki1978 style, free style

안녕하세요

임베디드 분야는 C가 대부분이라고 알고 있습니다.

혹시 괜찮으시다면 어떤 프로젝트인지도 궁금해서요.

임베디드 분야의 C++이 관심대상입니다.

비록 현재는 C + ARM ASM 이 제 밥벌이지만요 ㅎ

열정은 남자의 미래다! - suki1978 style, free style

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.