<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 31.20\. 制作libpq程序 要制作(也就是說編譯和鏈接)你的libpq程序, 你需要做下面的一些事情: * 包含`libpq-fe.h`頭文件: ``` #include &lt;libpq-fe.h&gt; ``` 如果你沒干這件事,那么你通常會看到類似下面這樣的來自編譯器的錯誤信息∶ ``` foo.c: In function `main': foo.c:34: `PGconn' undeclared (first use in this function) foo.c:35: `PGresult' undeclared (first use in this function) foo.c:54: `CONNECTION_BAD' undeclared (first use in this function) foo.c:68: `PGRES_COMMAND_OK' undeclared (first use in this function) foo.c:95: `PGRES_TUPLES_OK' undeclared (first use in this function) ``` * 告訴你的編譯器PostgreSQL頭文件的安裝位置,方法是給你的編譯器提供 `-I``_directory_`選項。(有些時候編譯器會查找缺省的目錄, 因此你可以忽略這些選項。) 比如,你的編譯命令行看起來像: ``` cc -c -I/usr/local/pgsql/include testprog.c ``` 如果你在使用制作文件(makefile),那么向`CPPFLAGS`變量中增加下面的選項: ``` CPPFLAGS += -I/usr/local/pgsql/include ``` 如果你的程序可能會被別人編譯,那么你應該避免像上面那樣把目錄路徑寫成硬編碼。 取而代之的是你可以運行`pg_config`工具找出頭文件在系統的什么地方: ``` &lt;samp class="literal"&gt;$&lt;/samp&gt; pg_config --includedir &lt;samp class="literal"&gt;/usr/local/include&lt;/samp&gt; ``` 如果你安裝了`pkg-config`,你可以運行: ``` &lt;samp class="literal"&gt;$&lt;/samp&gt; pkg-config --cflags libpq &lt;samp class="literal"&gt;-I/usr/local/include&lt;/samp&gt; ``` 注意路徑的前面早已包括`-I`。 如果沒能給編譯器提供正確的選項將產生類似下面這樣的錯誤信息: ``` testlibpq.c:8:22: libpq-fe.h: No such file or directory ``` * 在鏈接最后的程序的時候,聲明選項`-lpq`,這樣就可以把 libpq庫鏈接進來,還要聲明 `-L``_directory_`以告訴編譯器 libpq所處的目錄。(同樣,編譯器也會搜索一些缺省的目錄。) 為了盡可能提高可移植性,你應該把`-L`選項放在`-lpq`選項前面。比如: ``` cc -o testprog testprog1.o testprog2.o -L/usr/local/pgsql/lib -lpq ``` 你也可以用`pg_config`找出庫目錄: ``` &lt;samp class="literal"&gt;$&lt;/samp&gt; pg_config --libdir &lt;samp class="literal"&gt;/usr/local/pgsql/lib&lt;/samp&gt; ``` 或再次使用`pkg-config`: ``` &lt;samp class="literal"&gt;$&lt;/samp&gt; pkg-config --libs libpq &lt;samp class="literal"&gt;-L/usr/local/pgsql/lib -lpq&lt;/samp&gt; ``` 請注意,這會輸出全部選項,而不只是路徑。 指向這類問題的錯誤信息會是類似下面這個樣子。 ``` testlibpq.o: In function `main': testlibpq.o(.text+0x60): undefined reference to `PQsetdbLogin' testlibpq.o(.text+0x71): undefined reference to `PQstatus' testlibpq.o(.text+0xa4): undefined reference to `PQerrorMessage' ``` 這意味著你忘記了`-lpq`。 ``` /usr/bin/ld: cannot find -lpq ``` 這意味著你忘記`-L`了或沒有指定正確的目錄。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看