zoukankan      html  css  js  c++  java
  • Mac OSX 编译 LeanSDR

    LeanSDR:Lightweight, portable software-defined radio

    git clone http://github.com/pabr/leansdr.git
    cd leansdr/src/apps

    LeanSDR在使用过程中需要使用X11图形框架,首次在OSX编译LeanSDR会有报错:

    g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leandvb.cc -lX11 -o leandvb  ||  
        g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable       leandvb.cc       -o leandvb
    In file included from leandvb.cc:17:
    ../leansdr/gui.h:16:10: fatal error: 'X11/X.h' file not found
    #include <X11/X.h>
             ^
    1 error generated.
    g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leansdrscan.cc -lX11 -o leansdrscan  ||  
        g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable       leansdrscan.cc       -o leansdrscan
    leansdrscan.cc:115:10: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
            if ( nr < 0 ) fatal("read");
                 ~~ ^ ~
    1 warning generated.
    ld: library not found for -lX11
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    leansdrscan.cc:115:10: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
            if ( nr < 0 ) fatal("read");
                 ~~ ^ ~
    1 warning generated.
    g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leansdrcat.cc -lX11 -o leansdrcat  ||  
        g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable       leansdrcat.cc       -o leansdrcat
    ld: library not found for -lX11
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leantsgen.cc -lX11 -o leantsgen  ||  
        g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable       leantsgen.cc       -o leantsgen
    ld: library not found for -lX11
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leanchansim.cc -lX11 -o leanchansim  ||  
        g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable       leanchansim.cc       -o leanchansim
    ld: library not found for -lX11
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leandvbtx.cc -lX11 -o leandvbtx  ||  
        g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable       leandvbtx.cc       -o leandvbtx
    ld: library not found for -lX11
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    查找X11目录

    sudo find / -name "X.h"
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tk.framework/Versions/8.4/Headers/X11/X.h
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers/X11/X.h
    find: /dev/fd/cn0xroot: No such file or directory
    find: /dev/fd/cn0xroot: No such file or directory
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers/X11/X.h
    /opt/local/include/X11/X.h
    /opt/local/share/doc/boost/libs/coroutine/example/cpp03/asymmetric/X.h
    /opt/metasploit-framework/embedded/include/X11/X.h
    /opt/X11/include/X11/X.h
    /System/Library/Frameworks/Tk.framework/Versions/8.4/Headers/X11/X.h
    /System/Library/Frameworks/Tk.framework/Versions/8.5/Headers/X11/X.h

    解决方案:修改Makefile

    APPS = leandvb leansdrscan
    APPS += leansdrcat leantsgen leanchansim leandvbtx
    
    all: $(APPS)
    
    clean:
    rm -f $(APPS)
    
    DEPS = ../leansdr/*.h
    
    CXXFLAGS = -O3 -I.. -I/opt/X11/include -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable
    
    %: %.cc $(DEPS)
    g++ $(CXXFLAGS) -DGUI $< -lX11 -L/opt/X11/lib -o $@ || 
    g++ $(CXXFLAGS) $< -o $@
    
    EMBED_FLAGS= -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable 
    -Ofast -mfpu=neon -funsafe-math-optimizations -fsingle-precision-constant
    
    leandvb.embedded: leandvb.cc $(DEPS)
    g++ $(CXXFLAGS) $(EMBED_FLAGS) $< -static -o $@ || 
    g++ $(CXXFLAGS) $(EMBED_FLAGS) $< -o $@
    make

    Usage

    leandvb --help
    Usage: leandvb [options]  < IQ  > TS
    Demodulate DVB-S I/Q on stdin, output MPEG packets on stdout
    
    Input options:
      --u8           Input format is 8-bit unsigned (rtl_sdr, default)
      --f32          Input format is 32-bit float (gqrx)
      -f HZ          Input sample rate (default: 2.4e6)
      --loop         Repeat (stdin must be a file)
      --inbuf N      Additional input buffering (samples)
    
    Preprocessing options:
      --anf N        Number of birdies to remove (default: 1)
      --derotate HZ  For use with --fd-pp, otherwise use --tune
      --resample     Resample baseband (CPU-intensive)
      --resample-rej K  Aliasing rejection (default: 10)
      --decim N      Decimate baseband (causes aliasing)
      --cnr          Measure CNR (requires samplerate>3*symbolrate)
      --fd-pp NUM    Dump preprocessed IQ data to file descriptor
    
    DVB-S options:
      --sr HZ        Symbol rate (default: 2e6)
      --tune HZ      Bias frequency for demodulation
      --drift        Track frequency drift beyond safe limits
      --standard S   DVB-S (default), DVB-S2 (not implemented)
      --const C      QPSK (default), BPSK .. 32APSK (DVB-S2 only)
      --cr N/D       Code rate 1/2 (default) .. 7/8 .. 9/10
      --fastlock     Synchronize more aggressively (CPU-intensive)
      --sampler      nearest, linear, rrc
      --rrc-steps N  RRC interpolation factor
      --rrc-rej K    RRC filter rejection (defaut:10)
      --roll-off A   RRC roll-off (default: 0.35)
      --viterbi      Use Viterbi (CPU-intensive)
      --hard-metric  Use Hamming distances with Viterbi
    
    Compatibility options:
      --hdlc         Expect HDLC frames instead of MPEG packets
      --packetized   Output 16-bit length prefix (default: as stream)
    
    General options:
      --buf-factor   Buffer size factor (default:4)
      --hq           Maximize sensitivity
                     (Enables all CPU-intensive features)
      --hs           Maximize throughput (QPSK CR1/2 only)
                     (Disables all preprocessing)
    
    UI options:
      -h             Display this help message and exit
      -v             Output debugging info at startup and exit
      -d             Output debugging info during operation
      --fd-info NUM  Output demodulator status to file descriptor
      --fd-const NUM Output constellation and symbols to file descr
      --gui          Show constellation and spectrum (X11)
      --duration S   Width of timeline plot (default: 60)
      --linger       Keep GUI running after EOF
    
    Testing options:
      --awgn STDDEV  Add white gaussian noise (slow)
    eanchansim --help
    Usage: leanchansim [options]  < IQ.in  > IQ.out
    Simulate an imperfect communication channel.
    
    Input options:
      --iu8              Interpret stdin as complex unsigned char
      --if32             Interpret stdin as complex float
      -f Hz              Specify sample rate
      --loop             Repeat (stdin must be a file)
    
    Gain options:
      --scale FACTOR     Multiply by constant
    
    Drift options:
      --lo HZ            Specify nominal LO frequency
      --ppm PPM          Specify LO accuracy
      --drift-period S   Drift +-ppm every S seconds
      --drift-rate R     Drift with maximum rate R (Hz/s)
      --drift2-amp HZ    Add secondary drift (range in Hz)
      --drift2-freq HZ   Add secondary drift (rate in Hz)
    
    Noise options:
      --awgn STDDEV      Add white gaussian noise (dB)
    
    Output options:
      --ou8              Output as complex unsigned char
      --of32             Output as complex float
    leandvbtx --help
    Usage: leandvbtx [options]  < TS  > IQ
    Modulate MPEG packets into a DVB-S baseband signal
    Output float complex samples
    
    Options:  -f INTERP[/DECIM]        Samples per symbols (default: 2)
      --roll-off R             RRC roll-off (defalt: 0.35)
      --power P                Output power (dB)
      --agc                    Better regulation of output power
      -v                       Verbose output
    leansdrcat --help
    Usage: leansdrcat [options]
    Forward from stdin to stdout at constant rate.
    
    Options:
      --block      Pause when stdout is busy (default: '#' on stderr)
      --nonblock   Silently ignore when stdout is busy
      --cbr R      Set rate in bits per second
      --cbr8 R     Set rate in bytes per second
      --cbr16 R    Set rate in 16-bit words per second
      --cbr32 R    Set rate in 32-bit words per second
      --cbr64 R    Set rate in 64-bit words per second
      -h           Display this help message and exit
    leansdrscan --help
    Usage: leansdrscan [options]  [program settings]
    Run , cycling through combinations of settings.
    Example: 'leansdrscan -v cat -n,-e' will feed stdin through 'cat -n' and 'cat -e' alternatively.
    
    Options:
      -h              Print this message
      -v              Verbose
      --timeout N     Next settings if no output within N seconds
      --rewind        Rewind input (stdin must be a file)
      --probesize N   Forward only N bytes (with --rewind)
    leantsgen --help
    Usage: leantsgen [-c PACKETCOUNT]
    Output numbered MPEG TS packets on stdout.

    Example

    rtl_sdr -g 0 -f 315e6 -s 1000000 /tmp/test.ts
    leandvb --gui -v -d -f 1000e3 --sr 500e3 --cr 1/2 --derotate -4500 --anf 0 < /tmp/test.ts > mpeg.ts

    https://www.rtl-sdr.com/transmitting-dvb-s-with-a-plutosdr-and-receiving-it-with-an-rtl-sdr/

    http://www.pabr.org/radio/leandvb/leandvb.en.html

  • 相关阅读:
    leetcode 1301. 最大得分的路径数目
    LeetCode 1306 跳跃游戏 III Jump Game III
    LeetCode 1302. 层数最深叶子节点的和 Deepest Leaves Sum
    LeetCode 1300. 转变数组后最接近目标值的数组和 Sum of Mutated Array Closest to Target
    LeetCode 1299. 将每个元素替换为右侧最大元素 Replace Elements with Greatest Element on Right Side
    acwing 239. 奇偶游戏 并查集
    acwing 238. 银河英雄传说 并查集
    acwing 237程序自动分析 并查集
    算法问题实战策略 MATCHORDER 贪心
    Linux 安装Redis全过程日志
  • 原文地址:https://www.cnblogs.com/k1two2/p/7566678.html
Copyright © 2011-2022 走看看