---
# System prepended metadata

title: Build Instructions with PJSIP’s GNU Build Systems On MacOS
tags: [pjsua]

---

:::info
This guide is referring to the [PJSIP Documentation](https://docs.pjsip.org/en/latest/get-started/posix/build_instructions.html#using-default-settings).
:::
[TOC]
## Install GNU Tools
- Tools needed: GNU make (other make will not work), GNU binutils, GNU gcc.
    ```shell=
    brew install make
    brew install binutils
    brew install gcc
    ```
    > Here I use [Homebrew](https://brew.sh/) to install the packages. However, there are other options available such as [MacPorts](https://www.macports.org/).
- (Optional) If you need to have binutils first in your PATH, run:
    ```shell=
    echo 'export PATH="/opt/homebrew/opt/binutils/bin:$PATH"' >> ~/.zshrc
    ```
- For compilers to find binutils you may need to set:
    ```shell=
    export LDFLAGS="-L/opt/homebrew/opt/binutils/lib"
    export CPPFLAGS="-I/opt/homebrew/opt/binutils/include"
    ```
:::info
Note: `gmake` is specified instead of `make` in MacOS to invoke **GNU make** instead of the native make.
:::


## Install PJSIP
- Clone the source code from [GitHub - pjsip/pjproject](https://github.com/pjsip/pjproject)
    ```shell=
    git clone https://github.com/pjsip/pjproject.git
    ```
- It is recommended to start with default settings in `pjlib/include/pj/config_site_sample.h`, by including this file in `config_site.h`(you should create yourself).

    ```shell=
    cd pjproject
    vi pjlib/include/pj/config_site.h
    ```
    , then add:
    ```c=
    #include <pj/config_site_sample.h>
    ```
- Run `./configure`
    ```shell=
    ./configure
    ```
    > This will let the script detect the appropriate settings for the host.
    > The default settings build the libraries in release mode.

- Run GNU make
    ```shell=
    gmake dep
    gmake
    ```

- After compiling successfully, you will find an executable file `pjsua-arm-apple-darwin21.6.0` under `pjsip-apps/bin/`.

- Execute the file to start an UA
    ```shell=
    ./pjsua-arm-apple-darwin21.6.0 --no-tcp
    ./pjsua-arm-apple-darwin21.6.0 --no-tcp sip:<ip_addr>
    ```
