# Automatic Synthesiser Programmer

**URL:** https://forum.juce.com/t/automatic-synthesiser-programmer/20757
**Category:** General JUCE discussion
**Created:** [January 28, 2017, 1:01pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757 "2017-01-28T13:01:21Z")
**Posts on this page:** 10
**Page:** 2

<div class="post-metadata">

### Author: ![superdude](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/superdude/32/1655_2.png) [@superdude](https://forum.juce.com/u/superdude)
#### Post date: [February 22, 2017, 2:07pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/21 "2017-02-22T14:07:45Z")

</div>

Thanks Tom that’s great news, I’ll change the project in Github to utilise that. That should sort out all the issues when building on different platforms too. Much much much appreciated!

---

<div class="post-metadata">

### Author: ![superdude](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/superdude/32/1655_2.png) [@superdude](https://forum.juce.com/u/superdude)
#### Post date: [February 22, 2017, 3:02pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/22 "2017-02-22T15:02:44Z")

</div>

So I have more or less successfully build an .so library project. I’m a bit confused actually.

I have 100% opened up a new Dynamic Library project. I then add the neccessary header search paths, compiler flags and linker flags necessary to build the project.

**Extra compiler flags:**  
-fPIC  
**Extra linker flags:**  
-shared -lpython2.7 -lboost\_python  
**C++ standard to use:**  
C++11  
**Header search paths:**  
/usr/include/python2.7  
**Binary name:**  
renderman

This project now compiles great on Linux, but the binary created is prefixed with lib (which is okay) and suffixed with .a (not okay.) I thought the -shared linker flag created a .so file. If I change the binary name to [renderman.so](http://renderman.so), the created binary is actually librenderman.so.a

Ultimately the code seems to work in Python if I change the binary from whatever Projucer called it to [renderman.so](http://renderman.so). It would be great not to have to rename it if possible though!

---

<div class="post-metadata">

### Author: ![t0m](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/t0m/32/16413_2.png) [@t0m](https://forum.juce.com/u/t0m)
#### Post date: [February 22, 2017, 3:05pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/23 "2017-02-22T15:05:26Z")

</div>

Are you using the latest version of JUCE on the develop branch? We’ve made a lot of changes to the exporters recently, so this could either be something we’ve missed, or, hopefully, something we’ve already fixed.

---

<div class="post-metadata">

### Author: ![superdude](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/superdude/32/1655_2.png) [@superdude](https://forum.juce.com/u/superdude)
#### Post date: [February 22, 2017, 3:09pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/24 "2017-02-22T15:09:14Z")

</div>

No I’m a bit behind as I was using a fork that allows for Projucer to build QtCreator projects (it would be great to have official support for this - I’ve yet to see a better IDE for Linux. I also know you guys have priorities too!)

I’ll see how it goes with the latest dev branch and report back! Again, many thanks 🙂

---

<div class="post-metadata">

### Author: ![superdude](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/superdude/32/1655_2.png) [@superdude](https://forum.juce.com/u/superdude)
#### Post date: [February 22, 2017, 5:43pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/25 "2017-02-22T17:43:02Z")

</div>

Using the Develop branch doesn’t seem to fix the problem, the binary is still being both prefixed with ‘lib’ and suffixed with ‘.a’ no matter what I put…

---

<div class="post-metadata">

### Author: ![t0m](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/t0m/32/16413_2.png) [@t0m](https://forum.juce.com/u/t0m)
#### Post date: [February 23, 2017, 10:50am UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/26 "2017-02-23T10:50:58Z")

</div>

The ‘lib’ prefix is because that’s the convention for both static and dynamic libraries on Linux (and MacOS). Many build tools will fail to find your library if it isn’t named like that.

The ‘.a’ suffix was a JUCE bug - I’ve just pushed a fix to the develop branch.

---

<div class="post-metadata">

### Author: ![superdude](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/superdude/32/1655_2.png) [@superdude](https://forum.juce.com/u/superdude)
#### Post date: [February 24, 2017, 12:54pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/27 "2017-02-24T12:54:02Z")

</div>

Thank you Tom, that fixed the Linux side of things. Really appreciate the prompt responses and good explanations.

I now have a similar problem with MacOS, that is when I build a XCode project with the binary name as ‘[librenderman.so](http://librenderman.so)’, the actual binary is suffixed with a ‘.dylib’ and so is called ‘librenderman.so.dylib’.

Python only allows me to import modules from .so files so would it be possible to get the MacOS binary suffix producer functionality working please?

Many thanks

---

<div class="post-metadata">

### Author: ![t0m](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/t0m/32/16413_2.png) [@t0m](https://forum.juce.com/u/t0m)
#### Post date: [February 24, 2017, 2:03pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/28 "2017-02-24T14:03:16Z")

</div>

It’s working as expected; `.dylib` is the standard extension on MacOS (even if Python requires something different).

Does it work if you just rename the library `librenderman.dylib` -\> `librenderman.so`?

---

<div class="post-metadata">

### Author: ![superdude](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/superdude/32/1655_2.png) [@superdude](https://forum.juce.com/u/superdude)
#### Post date: [February 24, 2017, 4:27pm UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/29 "2017-02-24T16:27:59Z")

</div>

Yeah renaming the file works fine, it’s just if you add a suffix to the binary name in the Projucer, the Projucer implies that it will be the file type as it says “If you don’t add a suffix to this name, a suitable platform-specific suffix will be added automatically”. Honestly no problem though, I’ll write a little script that modifies the name.

---

<div class="post-metadata">

### Author: ![t0m](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/t0m/32/16413_2.png) [@t0m](https://forum.juce.com/u/t0m)
#### Post date: [February 27, 2017, 8:57am UTC](https://forum.juce.com/t/automatic-synthesiser-programmer/20757/30 "2017-02-27T08:57:27Z")

</div>

The Projucer tooltip is prefixed by “The filename to use for the destination binary executable file”. It’s quite common to use a custom suffix for executables on MacOS and Linux, but it’s very rare for non-executables like libraries. This could certainly be clearer though.

[Previous page](https://forum.juce.com/t/automatic-synthesiser-programmer/20757.md?page=1)
