タグ

C言語に関するxiangzeのブックマーク (10)

  • 自作ライブラリのリンク時に Undefined symbols for architecture エラーが発生する。

    これを見ると、なにやらライブラリの組み込みが無視されたということが伺えます。 具体的にはmissing required architecture arm64 のところで、おそらくarm64 用のバイナリが見つからなかったためにライブラリが無視されたということのようでした。 原因 原因は警告メッセージのとおりで、今回の場合はビルドされたライブラリに適切なバイナリが存在しなかったために発生したエラーでした。 ライブラリの場合は複数のバイナリをビルドしてまとめられたりするようですけど、デバッグビルドの時には効率優先で、現在のアーキテクチャーだけのバイナリを作るようにBuild Settings で設定されているようです。 Xcode 6 ではこれが推奨設定のため、プロジェクト設定を自動で調整してもらうと、この設定が有効になってビルドに失敗する場合もあります。 対処方法 対処方法は簡単で、Bui

  • C言語のinline - 簡潔なQ

    C/C++のinlineで間違いやすい3つのポイントがある。 1つは、GCCは3種類の異なるinline仕様を使い分けているという点である。3種類とは、「C++のinline」「C90用のGCC拡張inline」「C99以降のinline」である。 2つ目は、inlineを使っても、コンパイラが必ずインライン化を行うとは限らないという点である。 3つ目は、inlineを使うときは、プログラマは必ず、コンパイラがインライン化を行えるように特定の配慮をしなければいけないという点である。 つまり、inline関数は、「実体がどこにあるか」「inline化のための情報が足りているか」という2つの状態を同時に制御する必要がある。この細かい扱いの違いがバージョンにより異なるということになる。 以下バージョンごとの解説。おそらく歴史的な導入順序とは逆になっている。 C99以降のinline C99以降の

    C言語のinline - 簡潔なQ
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • TechCrunch | Startup and Technology News

    Welcome back to TechCrunch’s Week in Review — TechCrunch’s newsletter recapping the week’s biggest news. Want it in your inbox every Saturday? Sign up here. Over the past eight years,…

    TechCrunch | Startup and Technology News
  • http://www.linux-kongress.org/2009/slides/compiler_survey_felix_von_leitner.pdf

  • 第9回 C の関数との連携

    前のページ | 目次 | 次のページ 今回の内容 前回サブルーチンの呼び出しをやったので、今回はその応用として C の関数との連携をやります。この辺は処理系に依存するので、Windows の場合に限って話を進めます。 呼び出し規約 まず、C の呼び出し規約は3種類あります。VC++ の名前で言うと __cdecl, __stdcall, __fastcall です。VC++ では普段使われているのが __cdecl で、DLL などで使う WINAPI は __stdcall に define されています。__fastcall は普通使われていないようです。また、C++ のメンバ関数呼び出し用の規約として thiscall というのもあります。 まず、全ての規約の概略を説明しましょう。引数はスタックに push して渡します。32bit 以下の引数は全て 32bit に拡張されてスタック

  • Libav documentation : :

    1 外部ライブラリ より多くのフォーマットのサポートを追加するために、Libav は数多くの 外部ライブラリでフックすることができます。デフォルトではそれらは 利用されず、それらを使用するには ./configure に適切なフラグを 渡して明示的に要求しなければなりません。 1.1 OpenCORE および VisualOn ライブラリ Google Android のソースから分離独立し、OpenCORE、VisualOn および Fraunhofer ライブラリ は多くの音声コーデックのためのエンコーダーを提供します。 OpenCORE および VisualOn ライブラリは Apache License 2.0 (詳細は http://www.apache.org/licenses/LICENSE-2.0 を見てください) の下にあり、これは LGPL バージョン2.1および GP

  • C FAQ 5

    5.1: そもそもこの悪名高いヌルポインターとは何か。 A: C言語の定義によればどんなポインターの型にも特別な値、すなわち 「ヌルポインター」が存在する。このヌルポインターは他のどんなポ インターの値とも区別可能で、「いかなるオブジェクトや関数へのポ インターと比較しても等しくなることがないことを保証されている」。 すなわちアドレス演算子&を適用した結果がヌルポインターとなるこ ともない。またmallocの呼び出しに成功した場合の戻り値がヌルポイ ンターの場合もない(mallocは領域確保に失敗した場合にヌルポイン ターを返す。これがヌルポインターの典型的な使い方である。その値 によりアドレス以外の意味をあらわす特別なポインターの値で、たと えば「領域確保の失敗」とか、まだ「何も指していない」のような意 味を持つ)。 ヌルポインターは、初期化されていないポインターと考え方で異なる。 ヌル

  • 2006-08-29

    http://d.hatena.ne.jp/yupo5656/20060828/p1 素敵なのでマネしてみます。 色々常識が足りないけど、一応 main は呼んであげる。 main; __attribute__((constructor, destructor)) static x() { if (main) puts("world!"); else puts("hello", main = 195); }実行時に急造された上に world 起き場になる main。 main[30]; __attribute__((constructor)) static x() { if (main[0]) { main[0] = 0x6c726f77; main[1] = 0x0a2164; __asm__("movl $1, %%ebx \n" "movl %0, %%ecx \n" "movl $

    2006-08-29
  • C history

    Welcome to Nettica!Join the Cloud! We are a cloud based VPN service built on WireGuard™ technology providing fast, secure connections to local and cloud resources. Make your own cloud! Mix and match between local and multi-cloud environments managed with the Nettica Agent. Command and control your network from anywhere! OAuth2 and role-based access control provide a secure environment to manage yo

    C history
  • 1