728x90

• Numpy 패키지

 - C언어롤 구현된 파이썬 라이브러리

 - 고성능의 수치계산을 위해 제작 (난수생성 가능, 선형대수 가능)

 - Numerical Python의 줄임말로, 벡터 및 행렬 연산에 있어 매우 편리한 기능을 제공

 - array라는 단위로 데이터를 관리, 및 연산

 - 각 열의 데이터 타입이 동일해야 함

 

• Array 구조

 - 스칼라 (Scalar) : 하나의 숫자로 이루어진 데이터

 - 벡터 (Vector) : 여러개의 숫자들을 특정한 순서대로 모아놓은 데이터 모음 / 1D Array (1차원 배열)

 - 행렬 (Matrix) : 벡터들을 모아놓은 데이터 집합 / 2D Array (2차원 배열)

 - 텐서 (Tensor) : 같은 크기의 행렬들을 모아놓은 데이터 집합 / ND Array (다차원 배열)

 

• Numpy 패키지 사용법

import numpy as np   #numpy를 np라는 별칭으로 사용

 

• Array 구조

- np.array

data1 = [1,2,3,4,5]
data1

 [1,2,3,4,5]   # list 구조

arr1 = np.array(data1)
arr1

 array([1,2,3,4,5])    #list가 이제 array로 들어감

type(data1)

 list

type(arr1)

 array

 

- ndim : 축의 개수

arr1.ndim   #1차원 배열

 1

 

- shape : array의 크기 및 형태

arr1.shape

 (5, )

 

- dtype : 데이터유형 확인

arr1.dtype

 dtype('int64')

 

arr2 = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
arr2

 array([[  1,  2,  3],

            [  4,  5,  6],

            [  7,  8,  9],

            [10, 11, 12]])

 

arr2.ndim

  2

 

arr2.shape

 ( 4, 3)

 

• Array 연산

 - 기본적으로 numpy에서 연산을 할때는 크기가 서로 동일한 array끼리 연산이 진행.

 - 같은 위치에 있는 요소들끼리 연산이 진행.

arr1 = np.array([[1,2,3],[4,5,6]])
arr1

 array([1, 2, 3],

           [4, 5, 6])

 

arr1.shape

 ( 2, 3)

 

arr2 = np.array([[10,11,12],[13,14,15]])
arr2

 array([10, 11, 12],

           [13, 14, 15])

 

arr2.shape

 ( 2, 3)

 

arr1 + arr2

 array([11, 13, 15],

           [17, 19, 21])

 

arr1 - arr2

 array([-9, -9, -9],

           [-9, -9, -9])

 

arr1 * arr2

 array([10, 22, 36],

           [52, 70, 90])

 

• Array의 브로드캐스트

 - 브로드캐스트란 서로 크기가 다른 array가 연산이 가능하게끔 하는 것

arr3 = np.array([10,11,12])
arr3

 array([10, 11, 12])

 

arr1 + arr3

 array([[11, 13, 15],

            [14, 16, 18]])

 

arr1 * arr3

 array([[10, 22, 36],

            [40, 55, 72]])

 

- 연산 결과를 살펴보면 arr3이 [10,11,12]에서 [[10,11,12],[10,11,12]]로 확장되어 계산되었음을 알 수 있음.

- array 형태끼리 뿐만 아니라 스칼라도 연산이 가능

 

arr1 * 10

 array([[10, 20, 30],

            [40, 50, 160]])

 

• random 모듈

함수 내용
np.random.seed Seed를 통한 난수 생성
np.random.rand 균일 분포의 정수 난수 1개 생성
np.random.randint 0~1 사이의 균일 분포에서 난수 생성
np.random.randn 가우시안 표준 정규분포에서 난수 생성
np.random.shuffle 기존의 데이터 순서 바꾸기
np.random.choice 기존의 데이터에서 샘플링
np.unique 데이터에서 중복된 값 제거

 

- np.random.randint()

np.random.randint(6)   # 0-5사이의 숫자 랜덤추출

 

np.random.randint(1,20)   # 1-19사이의 숫자 랜덤추출

 

np.random.randint(1,20,size=10)

- np.random.rand(): 0~1의 균일분포

np.random.rand(6)

- np.random.rand(): 0~1의 균일분포

- np.random.randn(): 평균 0, 표준편차 1인 표준정규분포에서 랜덤 추출

- np.random.seed(): 동일한 랜덤추출된 숫자를 사용

- np.random.suffle(): 데이터 순서를 랜덤하게 바꿈

- np.random.choice(): 기존 데이터에서 랜덤하게 추출

- np.unique(): 중복제거

'Studying > Data Analysis' 카테고리의 다른 글

데이터 분석  (0) 2022.12.06
728x90

• 데이터 분석 과정

데이터 확인 → 결측값 확인 → 데이터 가공 → 데이터 분석 

(데이터 확인 / 결측값 확인 / 데이터 가공 까지의 과정을 전처리라고 함)

 

• 데이터 전처리의 중요성

- 모든 데이터 분석 프로젝트에서 전처리는 반드시 필요.

- 분석 결과/인사이트와 모델 성능에 직접적인 영향을 미치므로 가장 중요.

- 데이터 분석가들이 80% 이상의 시간을 데이터 수집 및 전처리에 사용.

 

• 데이터 전처리 및 시각화 활용 패키지

- Python의 패키지란 기능을 모아놓은 큰 상자

- 타인이 만들언 놓은 기능을 다운로드하여 사용함.

- 패키지를 불러와서 패키지 안에 있는 함수 사용

import random    #import 패키지명

random.random    #패키지명.함수

 

-  데이터 처리 : 판다스 (Pandas) / 넘파이 (Numpy)

-  데이터 시각화 : 맷플로립 (Matplotlib) / 씨본 (Seaborn)

 

 

728x90

데이터 조회(SELECT) : 데이터 조작어(DML)이며, 데이터 분서게서 가장 많이 사용되는 명령어

  - 여러 절들과 함꼐 사용됨

     절 : FROM, WHERE, GROUP BY, HAVING, ORDER BY

회원테이블을 FROM 절 테이블 확인
성별이 남성 조건으로 필터링하여 WHERE 절 FROM절 테이블을 특정 조건으로 필터링
거주지역별로 회원수 집계 GROUP BY 절 열 별로 그룹화
집계 회원수 100명 미만 조건으로 필터링 HAVING 절 그룹화된 새로운 테이블을 특정 조건으로 필터링
모든 열 조회 SELECT 절 선택
집계 회원수가 높은 순으로 ORDER BY 절 정렬

• GROUP BY 절이 사용되게 되면 기존 테이블이 새로운 테이블이 만들어짐

 

• FROM -> WHERE -> GROUP BY 순으로 실행

  - FROM -> GROUP BY 순으로 작성해도 됨

• GROUP BY는 집계함수와 주로 사용되는 명령어

  - 여러 열별로 그룹화가 가능

  - GROUP BY에 있는 열들을 SELECT에도 작성해야 원하는 분석 결과를 확인할 수 있음

 

• 실습

USE Practice;

/************FROM************/

/* Customer 테이블 모든 열 조회 */
SELECT *
   FROM CUSTOMER;
   
   
/************WHERE****************/

/* 성별이 남성 조건으로 필터링 */
SELECT *
  FROM CUSTOMER
WHERE GENDER = 'MAN';

/************GROUP BY**************/

/* 지역별로 회원 수 집계 */
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR;
/* COUNT : 행들의 개수를 구하는 집계함수 */

/************HAVING*************/

/* 집계 회원수 100명 미만 조건으로 필터링 */
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR
HAVING COUNT(MEM_NO) < 100;
/* < : 비교 연산자 / ~보다 작은 */

/**************ORDER BY*****************/
SELECT 
    ADDR, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    GENDER = 'MAN'
GROUP BY ADDR
HAVING COUNT(MEM_NO) < 100
ORDER BY COUNT(MEM_NO) DESC;
/* DESC : 내림차순 / ASC : 오름차순 */

/************FROM->(WHERE)->GROUP BY***********/
/* FROM->GROUP BY 순으로 작성해도 됨*/
SELECT ADDR, COUNT(MEM_NO) AS 회원수
FROM CUSTOMER
/* WHERE GENDER = 'MAN' */
GROUP BY ADDR; 

/************GROUP BY + 집계함수 ***********/
/* 거주지역을 서울, 인천 조건으로 필터링 */
/* 거지지역 및 성별로 회원수 집계 */
SELECT 
    ADDR, GENDER, COUNT(MEM_NO) AS 회원수
FROM
    CUSTOMER
WHERE
    ADDR IN ('SEOUL' , 'INCHEON')
GROUP BY ADDR , GENDER;

/***************SQL 명령어 작성법***************/
/* 회원테이블(Customer)을 */
/* 성별이 남성 조건으로 필터링하여 */
/* 거주지역별로 회원수 집계 */
/* 집계 회원수 100명 미만 조건으로 필터링 */
/* 모든 열 조회 */
/* 집계 회원수가 높은 순으로 */

SELECT  ADDR
				,COUNT(MEM_NO) AS 회원수
   FROM  CUSTOMER
WHERE  GENDER = 'MAN' 
GROUP
        BY   ADDR
HAVING  COUNT(MEM_NO) < 100
ORDER
		BY  COUNT(MEM_NO) DESC;

 

728x90

트랜젝션 제어어 (TCL) : 트랜젝션 제어어는 데이터 조작어(DML) 명령어 실행, 취소, 임시저장할 때 사용하는 명령어

트랜젝션 (Transaction) : 분할할 수 없는 최소 단위, 논리적인 작업 단위

실행 (COMMIT) : 모든 작업을 최종 실행

   취소 (ROLLBACK) :  모든 작업을 되돌림

임시 저장 (SAVEPOINT) : ROLLBACK 저장점을 지정하는 명령어

 

실습

/* Practice 데이터베이스 사용*/
USE Practice;

/*************테이블 생성(Create)*****************/
/* (회원테이블 존재할 시 , 회원테이블 삭제) */
DROP TABLE 회원테이블;

/* 회원테이블 생성 */
CREATE TABLE 회원테이블 ( 
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/*************BEGIN + 취소 (ROLLBACK)*************/
/* 트랜젝션 시작 */
BEGIN;

/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 취소 */
ROLLBACK;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/*************BEGIN + 실행  (COMMIT)*************/
/* 트랜젝션 시작 */
BEGIN;

/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 실행 */
COMMIT;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/************ 임시 저장 (SAVEPOINT) ************/
/* (회원테이블에 데이터 존재할 시, 데이터 모두 삭제) */
DELETE FROM 회원테이블;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 트랜젝션 시작 */
BEGIN;

/* 데이터 삽입 */
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);

/* SAVEPOINT 지정 */
SAVEPOINT S1;

/* 1001 회원 이름 수정 */
UPDATE 회원테이블
       SET 이름 = ' 이순신';
       
/* SAVEPINT 지정 */
SAVEPOINT S2;

/* 1001 회원 데이터 삭제 */
DELETE
    FROM 회원테이블;
    
/* SAVEPOINT 지정 */
SAVEPOINT S3;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* SAVEPINT S2 저장점으로 ROLLBACK */
ROLLBACK TO S2;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/* 실행 */
COMMIT;

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;
728x90

• 데이터 조작어(DML) : 데이터를 삽입, 조회, 수정, 삭제할 때 사용하는 명령어

(1) 삽입 : 제약조건 위반, 문자 및 날짜형 (' ')

(2) 조회 : 모든 열(*), 특정 열 이름 변경(AS)

(3) 수정 : 특정 조건 (WHERE)

(4) 삭제 : 특정 조건 (WHERE) 

 

• 실습

/* Practice 데이터 베이스 사용 */
USE Practice;

/************* 테이블 생성 (CREATE) *************/
/* 회원테이블 생성 */
CREATE TABLE 회원테이블(
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);

/************* 데이터 삽입 *************/
INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);
INSERT INTO 회원테이블 VALUES (1002, '이순신', '2020-01-03', 0);
INSERT INTO 회원테이블 VALUES (1003, '장영실', '2020-01-04', 1);
INSERT INTO 회원테이블 VALUES (1004, '유관순', '2020-01-05', 0);

/* 회원테이블 조회 */
SELECT * FROM 회원테이블;

/************* 조건 위반 *************/
/* PRIMARY KEY 제약 조건 위반 */
INSERT INTO 회원테이블 VALUES (1004, '장보고', '2020-01-06', 0);

/* NOT NULL 제약 조건 위반 */
INSERT INTO 회원테이블 VALUES (1005, '장보고', NULL, 0);

/* 데이터 타이5 조건 위반 */
INSERT INTO 회원테이블 VALUES (1004, '장보고', 1, 0);



/************* 데이터 조회 *************/
/* 모든 열 조회 */
SELECT * FROM 회원테이블;

/* 특정 열 조회 */
SELECT 회원번호,
       이름
  FROM 회원테이블;
    
/* 특정 열 이름 변경하여 조회 */
SELECT 회원번호,
       이름 AS 성명
  FROM 회원테이블;

 

 

• 데이터 제어어(DCL) : 데이터 접근 권한 부여 및 제거할 때 사용하는 명령어

 

• 실습

/******************사용자 확인******************/
/* MYSQL 데이터베이스 사용 */
USE MYSQL;

/* 사용자 확인 */
SELECT * FROM USER;

/*********** 사용자 추가 *********/
/* 사용자 아이디 및 비밀번호 생성 - localhost는 local 에서 접속이 가능하다는 뜻 / 뒤에 test는 비밀번호 */
CREATE USER 'TEST'@LOCALHOST IDENTIFIED BY 'TEST';

/* 사용자 확인 */
SELECT * FROM USER;

/* 사용자 비밀번호 변경 */
SET PASSWORD FOR 'TEST'@LOCALHOST = '1234';

/************ 권한 부여 및 제거 ************/
/** 권한 : CREATE, ALTER , DROP, INSERT, DELETE, UPDATE, SELECT 등 **/

/* 특정 권한 부여 */
GRANT SELECT, DELETE ON PRACTICE.회원테이블 TO 'TEST'@LOCALHOST;

/* 특정 권한 제거 */
REVOKE DELETE ON PRACTICE.회원테이블 FROM 'TEST'@LOCALHOST;

/*모든 권한 부여 */
GRANT ALL ON Practice.회원테이블 TO 'TEST'@LOCALHOST;

/*모든 권한 제거 */
REVOKE ALL ON Practice.회원테이블 FROM 'TEST'@LOCALHOST;

/************** 사용자 삭제 ****************/

/*사용자 삭제*/
DROP USER 'TEST'@LOCALHOST;

/* 사용자 확인*/
SELECT *
  FROM USER;

 

 

'Studying > SQL' 카테고리의 다른 글

데이터 조회(SELECT)  (0) 2021.09.27
SQL명령어 - 트랜젝션 제어어(TCL)  (0) 2021.09.27
SQL 명령어 - 데이터 정의어 (DDL)  (0) 2021.09.22
SQL 공부 시작하기  (0) 2021.09.21
728x90

 

 ∙ 데이터 정의어 : 테이블을 생성, 변경, 삭제할 때 사용하는 명령어

 ∙ 테이블은 각 열마다 반드시 1가지 데이터 타입으로 정의가 되어야 함.

     ☞ 데이터 타입 종류

       [ 숫자형 ]

데이터 형식 바이트 수  숫자 범위  설명
BIT 1 0 / 1 / NULL 논리형으로 참, 거짓으로 사용
INT 4 약 -21억~ +21억 정수
BIGINT 8 -2^63  ~+2^63 정수
FLOAT 4 -3.40..x 10^38 ~ 3.40..x 10^38 소수
DOUBLE 8 -1.79..x 10^308 ~ 1.79..x 10^308 소수

       [ 문자형 ]

데이터 형식 바이트 수 설명
CHAR(n) 0 ~ 8000 고정길이 문자형
NCHAR(n) 0 ~ 8000 유니코드 고정길이 문자형 *한글 0~4000자
VARCHAR(n) 0 ~ 2^31-1 가변길이 문자형 *VARCHAR(MAX) 2GB
NVARCHAR(n) 0 ~ 2^31-1 유니코드 가변길이 문자형 *NVARCHAR(MAX) 2GB

       [ 날짜형 ]

데이터 형식  바이트 수  설명
DATETIME 8 YYYY-MM-DD 시:분:초
DATE 3 YYYY-MM-DD
TIME 5 시:분:초

 

 ∙ 테이블의 각 열마다 제약조건을 정의할 수 있음.

     ☞ 제약조건

      1. PK(PRIMARY KEY) : 중복되어 나타날 수 없는 단일 값 : NOT NULL

      2. NOT NULL : NULL 허용하지 않음

 

 

 

 ∙ 실습

/* Practice 이름으로 데이터베이스 생성 */
CREATE DATABASE Practice;

/* Practice 데이터베이스 사용 */
USE Practice;

/*---------테이블 생성(Create)---------*/
CREATE TABLE 회원테이블 (
회원번호 INT PRIMARY KEY,
이름 VARCHAR(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);
/* 기본키 (PRIMARY KEY) : 중복되어 나타날 수 없는 단일 값 + NOT NULL */
/* NOT NULL : NULL 허용하지 않음 */

/*회원테이블 조회('*'은 모든 열을 조회한다는 뜻)*/
SELECT * FROM 회원테이블;

/*---------테이블 열 추가---------*/
/* 성별 열 추가 */
ALTER TABLE 회원테이블 ADD 성별 VARCHAR(2);

/*회원테이블 조회('*'은 모든 열을 조회한다는 뜻)*/
SELECT * FROM 회원테이블;

/*---------테이블 열 데이터 타입 변경---------*/
/* 성별 열 타입 변경 */
ALTER TABLE 회원테이블 MODIFY 성별 VARCHAR(20);

/*---------테이블 열 이름 변경---------*/
/* 성별 열 이름 변경 */
ALTER TABLE 회원테이블 CHANGE 성별 성 VARCHAR(2);

/*---------테이블 명 변경---------*/
ALTER TABLE 회원테이블 RENAME 회원정보;

/*---------테이블 삭제---------*/
DROP TABLE 회원정보;

 

728x90

눈물의 첫 면탈 후 마음을 다잡기 위해 새로운 공부를 시작해본다.

그것의 이름은 SQL !

열심히 공부하면서 실습도 하고 SQLD도 준비해보고자 한다!

강의는 edwith 부스트코스 '기초 데이터 분석을 위한 핵심 SQL'을 보며 공부하고 있다.

앞으로 이 카테고리에 공부한 내용들을 차곡차곡 쌓아보고자한다.

 

 

1. SQL이란?

SQL = Structured Query Language 

관계형 데이터베이스가 이해할 수 있는 구조화된 질의어.

관계형 데이터베이스에 있는 데이터를 분석하는 언어.

 

2. 관계형 데이터베이스 (RDB)이란?

RDB = Relational DataBase

행과 열로 구성된 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체.

  * 행과 열로 구성되어 있음.

  * 관계는 1:1, 1:N, N:N 세가지 형태로 있으며 테이블 간에 연결이 가능하다는 것을 의미.

    ex) 회원 - 주문 은 1:N 관계이다. 한명의 회원이 여러번 주문 가능

 

3. SQL 기본 명령어

SQL 명령어
데이터 정의어
(Data Definition Language)
데이터 조작어
(Data Manipulation Language)
데이터 제어어
(Data Control Language)
트랜젝션 제어어
(Transaction Control Language)
테이블 생성, 변경, 삭제 데이터 삽입, 조회, 수정, 삭제 데이터 접근 권한 부여, 제거 데이터 조작어(DML) 명령어 실행, 취소, 임시저장

4. DBA & Data Analyst

DBA = DataBase Administrator - 데이터베이스 관리자, 기업 내에서 데이터베이스를 관리 / 데이터 정의어, 데이터 제어어

Data Analyst - 데이터 분석을 통해 새로운 인사이트를 도출 / 데이터 조작어, 트랜젝션 제어어

 

5. MySQL Workbench 

- 단축어 ( MAC OS : Command / Window OS : Ctrl )

  Command + T : 새로운 쿼리창 열기

  Command + Enter : 쿼리 실행 

  Command + S : 쿼리 저장

 

 - 데이터 베이스 생성 

CREATE DATABASE 이름;

 

- 해당 데이터베이스 사용

USE 이름;

 

- 데이터 베이스 삭제 

DROP DATABASE 이름;

 

728x90

 

리액트 네이티브 개발 환경을 구축하던 중 에러가 나왔다.,,

 

JDK(Java Development Kit)를 설치하던 중 

 

Error: Unknown command: cask

다음과 같은 에러를 만났따!

 

해결하기 위해 서치해보니 명령어가 바뀌었다고 한다.

 

기존 설치 코드는

brew cask install adoptopenjdk8

로 나와있었는데

이를

 

brew install --cask adoptopenjdk8

이렇게 바꿔주면 잘 설치된다!

728x90

하,,, 험난한 라즈베리파이4에 텐서플로우 2.2.0 설치하기 과정

 

qengineering.eu/install-tensorflow-2.2.0-on-raspberry-pi-4.html

 

Install TensorFlow 2.2.0 on Raspberry Pi 4 - Q-engineering

A thorough guide on how to install TensorFlow 2.2.0 on your Raspberry Pi 4. Build from source code with Bazel for Python 3 and C++ API.

qengineering.eu

일단 설치 방법은 위 링크에 들어가서 따라하면 된다.

 

하지만 설치하면서 에러가 뜰것이다.

 

# install TensorFlow
$ sudo -H pip3 install tensorflow-2.2.0-cp37-cp37m-linux_armv7l.whl

나는 상단의 코드를 실행하니 하단과 같이 에러가 떴다...

 

ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

 

서치를 해보니 wrapt가 충돌하는 것 같은데

나와있는 해결책으로 모두 해결이 안됬다... 

대부분 하단과 같이 wrapt랑 여러가지를 업데이트하고 다시 설치를 하란다...

하지만 안됨,,ㅎ

pip3 install wrapt --upgrade --ignore-installed
pip3 install tensorflow

 

그래서

sudo -H pip3 install tensorflow-2.2.0-cp37-cp37m-linux_armv7l.whl wrapt --upgrade --ignore-installed

이렇게 텐서플로우를 설치하는 부분 뒤에 wrapt관련 덧붙여 주었더니 해결완료,,,

무슨차이인지는 잘 모르겠다... 아무튼 잘 설치되었다...!

728x90

라즈베리파이에 librosa를 설치하는 중 llvm설치에서 문제가 발생했다...

 

numba를 설치하면서 부터 llvm 버전이 10이나 9가 필요하다고 뜨는데

아무리 써치해서 나온 방법으로 llvm 버전 10을 다운받을래도 안되고 해맸다,,,

 

결국 수동으로 설치!

 

releases.llvm.org/download.html

 

LLVM Download Page

If you'd like access to the "latest and greatest" in LLVM development, please see the instructions for accessing the LLVM Git Repository. The major changes and improvements that the development version contains relative to the previous release are listed i

releases.llvm.org

라즈베리파이 비트를 확인하고 해당 버전에 맞게 수동으로 설치해주면 된다.

나의 라즈베리는 ARM32 비트이므로-

 

wget github.com/llvm/llvm-project/releases/download/llvmorg-10.0.1/clang+llvm-10.0.1-armv7a-linux-gnueabihf.tar.xz

 

입력해서 수동으로 다운 및 설치,,, 

꽤나 오래 걸린다 

 

설치 후에는 

 

tar -xvf clang*.xz
cd clang+llvm
(탭키 누르기)
sudo cp -R */usr/local

 

이렇게 입력해주면 설치가 완료!

 

 

 

 

+ Recent posts