Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 399. Synology NAS(DS216+II)에 gcc 컴파일러 설치 [링크 복사], [링크+제목 복사]
조회: 13674
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 4개 있습니다.)

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

비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  37  38  39  40  [41]  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
12595정성태4/12/20218690.NET Framework: 1036. SQL 서버 - varbinary 타입에 대한 문자열의 CAST, CONVERT 변환을 C# 코드로 구현
12594정성태4/11/20218168.NET Framework: 1035. C# - kubectl 명령어 또는 REST API 대신 Kubernetes 클라이언트 라이브러리를 통해 프로그래밍으로 접근 [1]파일 다운로드1
12593정성태4/10/20219312개발 환경 구성: 567. Docker Desktop for Windows - kubectl proxy 없이 k8s 대시보드 접근 방법
12592정성태4/10/20219122개발 환경 구성: 566. Docker Desktop for Windows - k8s dashboard의 Kubeconfig 로그인 및 Skip 방법
12591정성태4/9/202112343.NET Framework: 1034. C# - byte 배열을 Hex(16진수) 문자열로 고속 변환하는 방법 [2]파일 다운로드1
12590정성태4/9/20218889.NET Framework: 1033. C# - .NET 4.0 이하에서 Console.IsInputRedirected 구현 [1]
12589정성태4/8/202110200.NET Framework: 1032. C# - Environment.OSVersion의 문제점 및 윈도우 운영체제의 버전을 구하는 다양한 방법 [1]
12588정성태4/7/202110756개발 환경 구성: 565. PowerShell - New-SelfSignedCertificate를 사용해 CA 인증서 생성 및 인증서 서명 방법
12587정성태4/6/202111478개발 환경 구성: 564. Windows 10 - ClickOnce 배포처럼 사용할 수 있는 MSIX 설치 파일 [1]
12586정성태4/5/20219234오류 유형: 710. Windows - Restart-Computer / shutdown 명령어 수행 시 Access is denied(E_ACCESSDENIED)
12585정성태4/5/20218987개발 환경 구성: 563. 기본 생성된 kubeconfig 파일의 내용을 새롭게 생성한 인증서로 구성하는 방법
12584정성태4/1/20219686개발 환경 구성: 562. kubeconfig 파일 없이 kubectl 옵션만으로 실행하는 방법
12583정성태3/29/202111240개발 환경 구성: 561. kubectl 수행 시 다른 k8s 클러스터로 접속하는 방법
12582정성태3/29/20219899오류 유형: 709. Visual C++ - 컴파일 에러 error C2059: syntax error: '__stdcall'
12581정성태3/28/20219823.NET Framework: 1031. WinForm/WPF에서 Console 창을 띄워 출력하는 방법 (2) - Output 디버깅 출력을 AllocConsole로 우회 [2]
12580정성태3/28/20218592오류 유형: 708. SQL Server Management Studio - Execution Timeout Expired.
12579정성태3/28/20218620오류 유형: 707. 중첩 가상화(Nested Virtualization) - The virtual machine could not be started because this platform does not support nested virtualization.
12578정성태3/27/20218943개발 환경 구성: 560. Docker Desktop for Windows 기반의 Kubernetes 구성 (2) - WSL 2 인스턴스에 kind가 구성한 k8s 서비스 위치
12577정성태3/26/202110995개발 환경 구성: 559. Docker Desktop for Windows 기반의 Kubernetes 구성 - WSL 2 인스턴스에 kind 도구로 k8s 클러스터 구성
12576정성태3/25/20218793개발 환경 구성: 558. Docker Desktop for Windows에서 DockerDesktopVM 기반의 Kubernetes 구성 (2) - k8s 서비스 위치
12575정성태3/24/20217910개발 환경 구성: 557. Docker Desktop for Windows에서 DockerDesktopVM 기반의 Kubernetes 구성
12574정성태3/23/202111798.NET Framework: 1030. C# Socket의 Close/Shutdown 동작 (동기 모드)
12573정성태3/22/20219666개발 환경 구성: 556. WSL 인스턴스 초기 설정 명령어 [1]
12572정성태3/22/20219194.NET Framework: 1029. C# - GC 호출로 인한 메모리 압축(Compaction)을 확인하는 방법파일 다운로드1
12571정성태3/21/20218358오류 유형: 706. WSL 2 기반으로 "Enable Kubernetes" 활성화 시 초기화 실패 [1]
12570정성태3/19/202112674개발 환경 구성: 555. openssl - CA로부터 인증받은 새로운 인증서를 생성하는 방법
... 31  32  33  34  35  36  37  38  39  40  [41]  42  43  44  45  ...