일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SwiftUI
- SSL
- FIDO2
- albumbook
- css
- 앱리소스
- OSX
- kmip
- WebAuthn
- openssl
- Android
- MYSQL
- git
- SWIFT
- MSYS2
- MFA
- 애플
- Nodejs
- OTP
- appres
- apple
- 인증
- fido
- otpkey
- 2FA
- Xcode
- SSH
- 앨범북
- 앱스토어
- 안드로이드
Archives
- Today
- Total
인디노트
Linux - update-alternatives 본문
참조 : https://blog.thinkbee.kr/linux/linux-update-alternatives/
update-alternative 사용
여러 버전의 gcc를 update-alternative
를 사용해서 선택적으로 사용할 수 있다. gcc
로 등록된 현재 버전 목록을 질의 한다.
$ update-alternatives --query gcc
GCC 설치의 예
sudo apt-get update
sudo apt-get install gcc-4.7 g++-4.7
sudo apt-get install gcc-4.8 g++-4.8
등록
여기서 사용하는 여러 gcc 버전들을 설치한 후에 다음과 같은 명령어로 등록을 할 수 있다.
update-alternatives --install <link> <name> <path> <priority>
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
설정된 버전 표기
$ sudo update-alternatives --list gcc
/usr/bin/gcc-4.8
/usr/bin/gcc-5
$ sudo update-alternatives --display gcc
gcc 버전 교체하기
이렇게 gcc 버전들을 등록해서 설정한 후에 gcc를 교체해서 사용할 수 있다. --config
옵션을 주고 목록에 있는 gcc 버전을 선택한다.
$ update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-4.8 20 auto mode
1 /usr/bin/gcc-4.8 20 manual mode
2 /usr/bin/gcc-5 10 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
$ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
삭제
설정한 내역을 지워버리고 싶을 때에는 --remove
옵션을 사용한다.
$ sudo update-alternatives --remove <name> <path>
sudo update-alternatives --remove-all gcc
테스트
update-alternatives --config arm-linux-gnueabihf
로 교체해서 다음을 컴파일 해보자.
hello world
#include "stdio.h"
int main(void) {
printf("Hello world !\n");
return 0;
}
$ arm-linux-gnueabihf-gcc hello.c -o hello
hello world c++
#include "iostream"
using namespace std;
int main(int argc, char *argv[]) {
cout << "Hello world !" << endl;
return 0;
}
g++로 컴파일 하고
$ arm-linux-gnueabi-g++ hello.cc -o hello
C++ std 14
아래는 std++14 이상 컴파일이 필요한 lambda 제너릭 코드이다.
// Generic lambda is C++14 code
#include <iostream>
int main()
{
auto lambda = [](auto x){ return x; };
std::cout << lambda("Hello generic lambda!\n");
return 0;
}
g++-4.9를 사용해서
위 코드를 표준 C++ 로 컴파일 하면 아래 같이 구문 분석에서 에러가 난다.
$ g++ -std=c++1y test_cpp14.cpp -o test_cpp14
hello_cpp14.cpp:6:27: error: parameter declared ‘auto’
c++14 옵션을 사용해서
$ g++ -std=c++14 test_cpp14.cpp -o test_cpp14
반응형
'개발 플랫폼 및 언어' 카테고리의 다른 글
Linux - update-alternatives - ARM 추가 (0) | 2019.03.15 |
---|---|
Linux - update-alternatives - gcc 예제 (0) | 2019.03.15 |
UFW Firewall on Ubuntu/Debian (0) | 2019.03.15 |
Ubuntu 16.04 system service 등록하기 (0) | 2019.03.15 |
Ubuntu/Debian ARM Cross compile 환경 (0) | 2019.03.15 |
Comments