Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 399. Synology NAS(DS216+II)에 gcc 컴파일러 설치 [링크 복사], [링크+제목 복사],
조회: 20802
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)
(시리즈 글이 8개 있습니다.)
개발 환경 구성: 399. Synology NAS(DS216+II)에 gcc 컴파일러 설치
; https://www.sysnet.pe.kr/2/0/11705

개발 환경 구성: 403. Synology NAS(DS216+II)에 docker 설치 후 .NET Core 2.1 응용 프로그램 실행하는 방법
; https://www.sysnet.pe.kr/2/0/11713

개발 환경 구성: 404. (opkg가 설치된) Synology NAS(DS216+II)에 cmake 설치
; https://www.sysnet.pe.kr/2/0/11718

Linux: 3. Synology NAS(DS216+II)에서 FTDI 장치를 C/C++로 제어
; https://www.sysnet.pe.kr/2/0/11733

Linux: 4. Synology NAS(DS216+II)에 FTDI 장치 연결 후 C#(.NET Core)으로 DTR 제어
; https://www.sysnet.pe.kr/2/0/11734

사물인터넷: 51. Synology NAS(DS216+II)를 이용한 원격 컴퓨터의 전원 스위치 제어
; https://www.sysnet.pe.kr/2/0/11740

개발 환경 구성: 446. Synology NAS를 Windows 10에서 iSCSI로 연결하는 방법
; https://www.sysnet.pe.kr/2/0/11967

개발 환경 구성: 720. Synology NAS - docker 원격 제어를 위한 TCP 바인딩 추가
; https://www.sysnet.pe.kr/2/0/13712




Synology NAS(DS216+II)에 gcc 컴파일러 설치

Synology는 NAS 장비이지만 스펙만으로 보면 그냥 한 대의 컴퓨터로도 사용할 수 있습니다. 실제로 제어판 / "터미널 및 SNMP"의 "터미널" 탭에서 "SSH 서비스 활성화"를 해주면 일반 리눅스 장비처럼 SSH 접속을 할 수 있습니다.

따라서 윈도우 사용자라면 putty 등을 이용해 ssh 접속을 할 수 있고, root 사용자 권한으로 변경하기 위해 다음과 같이 명령을 내립니다.

tester@mynas:~$ sudo -i

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:
root@mynas:~#

그다음 ipkg 패키지 관리자를 설치합니다.

ipkg package manager installation on Synology NAS 
; http://rescene.wikidot.com/synology-ipkg

위의 글에 따라, 제가 가진 DS216+II 모델은 Intel CPU에 64비트 CPU이므로 다음의 sh 파일을 다운로드해,

wget http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/stable/syno-i686-bootstrap_1.2-7_i686.xsh

다음과 같이 실행합니다.

chmod +x syno-i686-bootstrap_1.2-7_i686.xsh
sh syno-i686-bootstrap_1.2-7_i686.xsh
rm syno-i686-bootstrap_1.2-7_i686.xsh    // 실행 후에는 필요 없으므로 삭제

이후 ipkg 프로그램은 "/opt/bin" 경로에 설치되므로 다음과 같이 실행하면 됩니다.

~# /opt/bin/ipkg

// 또는 그냥 ipkg로 실행합니다.

~# ipkg

자, 그럼 이제 ipkg로 가용한 패키지 목록을 업데이트하고,

~# ipkg update

원하는 프로그램을 설치하면 됩니다. gcc를 설치하기로 했으니 ^^ 다음과 같이 설치합니다.

~# ipkg install gcc

// 또는 gcc를 비롯해 각종 개발 도구를 함께 설치해 주는 optware-devel을 설치

~# ipkg install optware-devel




확인을 해봐야겠죠. ^^ 테스트용 hello world를 만들어,

#include <stdio.h>

int main (void)
{
  printf ("Hello, world!\n");
  return 0;
}

빌드하는데 오류가 발생합니다.

$ gcc hello.c -o hello
Segmentation fault

혹시 이 오류 해결하신 분 계시면 덧글 부탁드립니다. ^^ 저는 이 오류를 해결하지 못해 어쩔 수 없이 ipkg를 포기하고 opkg 패키지 관리자로 갈아타서 해결했습니다.

Synology NAS(DS216+II)에서 실행한 gcc의 Segmentation fault
; https://www.sysnet.pe.kr/2/0/11706

언젠가는 ipkg의 gcc(버전 4.2.1)도 오류가 발생하지 않을 수 있기에 이 기록을 남겨둡니다.




참고로, optware-devel 도구 설치 시 wget 오류가 다음과 같이 발생할 수 있습니다.

An error ocurred, return value: 1.
Collected errors:
Cannot find package crosstool-native.
Check the spelling or perhaps run 'ipkg update'
ERROR: The following packages conflict with wget-ssl:
         wget

이런 경우 그냥 wget을 지우고 wget-ssl을 다시 설치하면 됩니다.

ipkg remove wget
ipkg install wget-ssl




저처럼 Visual Studio 사용자라면 ^^ makefile에 익숙지 않을 텐데요, 처음 수작업으로 만들어 본 makefile에서,

test.out: test.o
    gcc -o test.out test.o

test.o: test.c
    gcc -c -o test.o test.c

다음과 같은 오류가 발생했습니다.

makefile:2: *** missing separator.  Stop.

간단합니다. makefile이 들여 쓰기를 인식하는데 반드시 탭(\t) 문자를 사용해야 하기 때문입니다.

test.out: test.o
    gcc -o test.out test.o   # 이 라인의 시작이 공백이 아닌 탭 문자

test.o: test.c
    gcc -c -o test.o test.c  # 이 라인의 시작이 공백이 아닌 탭 문자

재미있는 것은 탭 문자에 준하는 8개의 공백을 넣어도 다음과 같이 오류가 발생합니다.

makefile:2: *** missing separator (did you mean TAB instead of 8 spaces?).  Stop.

그러니까, 무조건 탭 문자여야 합니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 7/10/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  79  80  81  82  83  84  85  86  [87]  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11757정성태10/19/201817078개발 환경 구성: 416. Visual Studio 2017을 이용한 아두이노 프로그램 개발(및 디버깅)
11756정성태10/19/201820356오류 유형: 500. Visual Studio Code의 아두이노 프로그램 개발 시 인텔리센스가 안 된다면?
11755정성태10/19/201821408오류 유형: 499. Visual Studio Code extension for Arduino - #include errors detected. [1]
11754정성태10/19/201818196개발 환경 구성: 415. Visual Studio Code를 이용한 아두이노 프로그램 개발 - 새 프로젝트
11753정성태10/19/201825663개발 환경 구성: 414. Visual Studio Code를 이용한 아두이노 프로그램 개발
11752정성태10/18/201818266오류 유형: 498. SQL 서버 - Database source is not a supported version of SQL Server
11751정성태10/18/201818479오류 유형: 497. Visual Studio 실행 시 그래픽이 투명해진다거나, 깨진다면?
11750정성태10/18/201816835오류 유형: 496. 비주얼 스튜디오 - One or more projects in the solution were not loaded correctly.
11749정성태10/18/201818902개발 환경 구성: 413. 비주얼 스튜디오에서 작성한 프로그램을 빌드하는 가장 쉬운 방법
11748정성태10/18/201819139개발 환경 구성: 412. Arduino IDE를 Store App으로 설치한 경우 컴파일만 되고 배포가 안 되는 문제
11747정성태10/17/201819780.NET Framework: 799. C# - DLL에도 EXE처럼 Main 메서드를 넣어 실행할 수 있도록 만드는 방법파일 다운로드1
11746정성태10/15/201819335개발 환경 구성: 411. Bitvise SSH Client의 인증서 모드에서 자동 로그인 방법파일 다운로드1
11745정성태10/15/201817212오류 유형: 495. TFS 파일/폴더 삭제 - The item [...] could not be found in your workspace, or you do not have permission to access it.
11744정성태10/15/201818055개발 환경 구성: 410. msbuild로 .pubxml 설정에 따른 배포 파일을 만드는 방법
11743정성태10/15/201819251웹: 37. Bootstrap의 dl/dt/dd 조합에서 문자열이 잘리지 않도록 CSS 설정
11742정성태10/15/201825070스크립트: 13. 윈도우 배치(Batch) 스크립트에서 날짜/시간 문자열을 구하는 방법
11741정성태10/15/201818894Phone: 13. Android - LinearLayout 간략 설명
11740정성태10/15/201820841사물인터넷: 51. Synology NAS(DS216+II)를 이용한 원격 컴퓨터의 전원 스위치 제어
11739정성태10/15/201822535Windows: 151. 윈도우 10의 전원 관리가 "균형 조정(Balanced)"으로 바뀌는 문제
11738정성태10/15/201820782오류 유형: 494. docker - 윈도우에서 실행 시 "unknown shorthand flag" 오류 [1]
11737정성태10/13/201816711오류 유형: 493. Azure Kudu - There are ... items in this directory, but maxViewItems is set to 299
11736정성태10/12/201818285오류 유형: 492. Visual Studio 로딩 시 오류 - The 'Scc Display Information' package did not load correctly.
11735정성태10/12/201824077VS.NET IDE: 129. Visual Studio - 특정 문자(열)를 개행 문자로 바꾸는 방법
11734정성태10/10/201818468Linux: 4. Synology NAS(DS216+II)에 FTDI 장치 연결 후 C#(.NET Core)으로 DTR 제어파일 다운로드1
11733정성태10/10/201821194Linux: 3. Synology NAS(DS216+II)에서 FTDI 장치를 C/C++로 제어
11732정성태10/10/201820918디버깅 기술: 119. windbg 분석 사례 - 종료자(Finalizer)에서 예외가 발생한 경우 비정상 종료(Crash) 발생파일 다운로드1
... 76  77  78  79  80  81  82  83  84  85  86  [87]  88  89  90  ...