2013-02-13 160 views
0

有人可以幫助我鏈接到共享庫,特別是libzmq,在C + +?如何鏈接到共享庫在c + +

all: clean compile           

clean:              
    rm bin *.o -f           

compile:             
    g++ -g -Wall -I/usr/local/include -L/usr/local/lib main.cpp -lzmq -o bin 

我已經安裝使用libzmq以下步驟:

git clone https://github.com/zeromq/libzmq.git 
cd libzmq 
./autogen.sh 
./configure 
make && sudo make install 

這裏是我的main.cpp

#include <iostream>              
#include <string>               

#include <zmq/zmq.h>              

// Required by fork routine            
#include <sys/types.h>              
#include <unistd.h>              

// Required by wait routine            
#include <sys/wait.h>              

#include <stdlib.h>   // Declaration for exit()      
#include <cstdio>   // printf          
using namespace std;              

int global_variable = 2;             

int main(int argc, char** argv){           
    const short int FORK_FAILED = -1;          
    const short int FORK_SUCCESS = 0;          
    int stack_variable = 20;            
    pid_t pid;                
    string status_identifier;            
    switch (pid = fork()){             
     case FORK_SUCCESS:             
      printf("Child changing global and stack variables\n");   
      global_variable++;            
      stack_variable++;            
      break;               
     case FORK_FAILED:             
      cerr << "Failed! -- Failed to fork: " << pid << endl;  
      exit(1);              
     default:               
      printf("Child process (pid=%d) created successfully.\n", pid); 
      wait(0);              
      break;               
    }                  
    printf("[pid=%d] Global: %d\n", pid, global_variable);    
    printf("[pid=%d] Stack: %d\n", pid, stack_variable);     
    return 0;                
}                   

而且,這裏的錯誤信息:

bitcycle @ ubuntu64vm ~/git/test $ make 
rm bin *.o -f 
g++ -g -Wall -I/usr/local/include -L/usr/local/lib main.cpp -lzmq -o bin 
main.cpp:4:23: fatal error: zmq/zmq.hpp: No such file or directory 
compilation terminated. 
make: *** [compile] Error 1 

錯誤非常簡單,但是我還沒有找到解決方案。有任何想法嗎?

我的目標是做一些類似this與多個子進程。

更新我只是要在Ubuntu系統中安裝它:sudo apt-get install libzmq-dev,並解決了這個問題。它並沒有告訴我有關如何識別磁盤上的共享庫和頭文件並鏈接到它的任何信息......但我想我可以將它移到另一天。

+1

這不是一個鏈接錯誤。 '這是一個編譯器錯誤,尤其是無法找到您的頭文件。仔細檢查你的包含路徑。 – WhozCraig 2013-02-13 17:51:36

+3

你確定'/ usr/local/include'中有'zmq /'子目錄嗎?在Debian的'libzmq-dev'上,沒有這樣的子目錄,你直接''#include ' – 2013-02-13 17:52:47

+0

@AntonKovalenko - 我從源碼安裝libzmq,如上面「我如何安裝libzmq」部分所述。 – bitcycle 2013-02-13 17:54:50

回答

1

ZeroMQ(zmq.hpp)的C++包裝器不再是ZeroMQ的一部分。目前的libzmq master或最新的stable 3.2.x中沒有zmq.hpp。