GCC拡張属性:constructorとunusedの活用法
GCCの属性機能は、変数や関数に対して特別な振る舞いを付与する強力な機能です。属性の適用場所には決まりがあり、変数の場合は変数名の直後に記述し、関数の場合は宣言部分に記述します(定義部分ではありません)。ただし、constructorやunusedなどの一部属性は例外として扱われます。
プログラム開始前の自動実行:constructor属性
C言語において、main関数よりも前に ...
7月16日 16:28 投稿
Linux環境での開発と操作のヒント
はじめに
Linuxは、特にプログラミングやシステム開発において非常に強力なオペレーティングシステムです。ここでは、Linux環境(特にNOI Linuxなど)での開発ワークフロー、基本的な操作、そしてVimエディタの設定に関するヒントを紹介します。
基本的な操作
ファイル管理
デスクトップへのファイルのドラッグ&ドロップ:ファイルをデスクトップの上部領域にドラッグす ...
7月12日 16:52 投稿
C言語のmain関数と実行時引数の深層解説
main関数の本質
C言語においてプログラムの実行開始点となるmain関数は、OSから直接呼び出される特別な関数です。実装にはいくつかの形式が存在します。
定義形式の多様性
標準規格ではint main(void)またはint main(int, char**)が推奨されますが、実際のコンパイラはより多くの形式を受け入れます。
// 形式1: 引数なし・戻り値なし(非推奨だがコンパイル可能)
void ...
7月1日 23:32 投稿
Windows 10でUbuntuサブシステムを活用する方法
WSLの有効化とUbuntuインストール手順
開発者モードを有効にします:設定 → 更新とセキュリティ → 開発者向け → 「開発者モード」を選択。
次に、Linux用Windowsサブシステム機能を有効化:コントロールパネル → プログラムと機能 → Windows機能の有効化 → 「Windows Subsystem for Linux」にチェックを入れて再起動。
Microsoft Storeを開き、「Ubuntu」を検索してインス ...
6月29日 22:27 投稿
Linuxプログラミング入門からマスターまで
第1章 Linuxシステム概要
1.1.1 オペレーティングシステムの概念
オペレーティングシステムはコンピュータハードウェアとユーザーの間のインタフェースとして機能する。
1.1.2 オペレーティングシステムの基本機能
プロセス管理
メモリ管理
I/Oデバイス管理
ファイル管理
1.2.2 Linuxシステムの構成
Linuxは以下の4つの要素から構成される:
カーネル:システムコー ...
6月10日 17:39 投稿
MSYS環境でのGCCのローカライズサポート有効化
MSYS環境でGCCを使用する際に、デフォルトではローカライズサポートが無効になっています。これにより、コンパイル時のエラーメッセージは英語のみとなります。
// エラーを含むCコードの例
#include <stdio.h>
int main(){
int a = 1;
n b = 2;
d c = 1.1;
p("Hello world!\n");
return v;
}
このコードをコンパイルすると以下のエラーメッセ ...
5月30日 10:08 投稿
ARMアーキテクチャ向けONNX Runtime GPU版のソースビルド手順
環境情報
アーキテクチャ: aarch64
OS: Ubuntu 20.04
GPU: NVIDIA T4
前提条件
CUDAが適切にインストール済み
cuDNNが適切にインストール済み
CMakeが適切にインストール済み
ビルド手順
1. ソースコードの取得
git clone --recursive https://github.com/microsoft/onnxruntime.git
cd onnxruntime
2. バージョンの切り替え
git checkout v1.16.3
...
5月29日 15:10 投稿
Linuxにおける動的ライブラリの利用と静的・動的リンクの動作確認
動的ライブラリの活用とリンク動作の検証
前回作成した動的ライブラリlibmymath.soを用いて、アプリケーションにリンクさせる方法を再確認します。
一般的なコンパイルコマンド:
gcc main.c -L. -lmymath
-L.:カレントディレクトリに存在するライブラリを参照
-lmymath:自作ライブラリlibmymath.soを使用することを指定
生成されたa.outをlddで確認すると、標 ...
5月23日 00:59 投稿